-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Haskell interface to the HDF5 scientific data storage library.
--   
--   This is a low-level but typesafe Haskell interface to the HDF5
--   library. No pointers necessary.
@package hdf5
@version 1.8.15

module Bindings.HDF5.Raw.H5C
newtype H5C_cache_incr_mode
H5C_cache_incr_mode :: Word32 -> H5C_cache_incr_mode
h5c_incr__off :: H5C_cache_incr_mode
h5c_incr__threshold :: H5C_cache_incr_mode
newtype H5C_cache_flash_incr_mode
H5C_cache_flash_incr_mode :: Word32 -> H5C_cache_flash_incr_mode
h5c_flash_incr__off :: H5C_cache_flash_incr_mode
h5c_flash_incr__add_space :: H5C_cache_flash_incr_mode
newtype H5C_cache_decr_mode
H5C_cache_decr_mode :: Word32 -> H5C_cache_decr_mode
h5c_decr__off :: H5C_cache_decr_mode
h5c_decr__threshold :: H5C_cache_decr_mode
h5c_decr__age_out :: H5C_cache_decr_mode
h5c_decr__age_out_with_threshold :: H5C_cache_decr_mode
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5C.H5C_cache_decr_mode
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5C.H5C_cache_flash_incr_mode
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5C.H5C_cache_incr_mode
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5C.H5C_cache_decr_mode
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5C.H5C_cache_flash_incr_mode
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5C.H5C_cache_incr_mode
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5C.H5C_cache_decr_mode
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5C.H5C_cache_flash_incr_mode
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5C.H5C_cache_incr_mode

module Bindings.HDF5.Raw.H5FD.MPI
h5d_ONE_LINK_CHUNK_IO_THRESHOLD :: Num a => a
h5d_MULTI_CHUNK_IO_COL_THRESHOLD :: Num a => a
newtype H5FD_mpio_xfer_t
H5FD_mpio_xfer_t :: Word32 -> H5FD_mpio_xfer_t
h5fd_MPIO_INDEPENDENT :: H5FD_mpio_xfer_t
h5fd_MPIO_COLLECTIVE :: H5FD_mpio_xfer_t
newtype H5FD_mpio_chunk_opt_t
H5FD_mpio_chunk_opt_t :: Word32 -> H5FD_mpio_chunk_opt_t
h5fd_MPIO_CHUNK_DEFAULT :: H5FD_mpio_chunk_opt_t
h5fd_MPIO_CHUNK_ONE_IO :: H5FD_mpio_chunk_opt_t
h5fd_MPIO_CHUNK_MULTI_IO :: H5FD_mpio_chunk_opt_t
newtype H5FD_mpio_collective_opt_t
H5FD_mpio_collective_opt_t :: Word32 -> H5FD_mpio_collective_opt_t
h5fd_MPIO_COLLECTIVE_IO :: H5FD_mpio_collective_opt_t
h5fd_MPIO_INDIVIDUAL_IO :: H5FD_mpio_collective_opt_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_chunk_opt_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_collective_opt_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_xfer_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_chunk_opt_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_collective_opt_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.MPI.H5FD_mpio_xfer_t

module Bindings.HDF5.Raw.H5MM
type H5MM_allocate_t info mem = FunPtr CSize -> Ptr info -> IO Ptr mem
type H5MM_free_t info mem = FunPtr Ptr mem -> Ptr info -> IO ()


-- | various common data-passing conventions
module Foreign.Ptr.Conventions
class WrappedPtr (p :: Type -> Type)
wrapPtr :: WrappedPtr p => Ptr a -> p a
unwrapPtr :: WrappedPtr p => p a -> Ptr a
nullWrappedPtr :: WrappedPtr p => p a
castWrappedPtr :: WrappedPtr p => p a -> p b

-- | In by-ref parameter; memory is allocated and freed by caller
newtype In a
In :: Ptr a -> In a

-- | In by-ref array; memory is allocated and freed by caller
newtype InArray a
InArray :: Ptr a -> InArray a
withIn :: (Storable a, MonadBaseControl IO m) => a -> (In a -> m b) -> m b
withInList :: (Storable a, MonadBaseControl IO m) => [a] -> (InArray a -> m b) -> m b
withInVector :: (Storable a, MonadBaseControl IO m) => Vector a -> (InArray a -> m b) -> m b
withInMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (InArray a -> m b) -> m b

-- | Out by-ref parameter; memory is allocated and freed by caller
newtype Out a
Out :: Ptr a -> Out a

-- | Out by-ref array; length is specified by caller, memory is allocated
--   and freed by caller
newtype OutArray a
OutArray :: Ptr a -> OutArray a
withOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m b) -> m (a, b)
withMaybeOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m Bool) -> m (Maybe a)
withOut_ :: (Storable a, MonadBaseControl IO m, MonadIO m) => (Out a -> m b) -> m a
withOutMVector :: (Storable a, MonadBaseControl IO m) => IOVector a -> (Int -> OutArray a -> m b) -> m b
withOutVector :: (Storable a, MonadBaseControl IO m, MonadIO m) => Int -> (OutArray a -> m b) -> m (Vector a, b)
withOutVector_ :: Storable a => Int -> (OutArray a -> IO b) -> IO (Vector a)
withOutVector' :: (Storable a, Integral b) => Int -> (OutArray a -> IO b) -> IO (Vector a)
withOutList :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m ([a], b)
withOutList_ :: (Storable a, MonadIO m) => Int -> (OutArray a -> m b) -> m [a]
withOutList' :: (Storable a, MonadIO m) => Int -> (OutArray a -> m Int) -> m ([a], Int)

-- | <tt>withOutList0 zero n f</tt>: allocate an array large enough to hold
--   <tt>n</tt> elements, plus one extra spot for a terminator. Calls
--   <tt>f</tt> with that buffer, which is expected to fill it with up to
--   <tt>n</tt> elements, followed by <tt>zero</tt>. The elements are then
--   read out into a list.
withOutList0 :: (Storable a, Eq a, MonadIO m) => a -> Int -> (OutArray a -> m b) -> m ([a], b)

-- | Get a <a>ByteString</a> from a function using the common "buffer and
--   size in, bytes written out" convention.
--   
--   Calls the function twice; once with a null pointer to discover the
--   length needed and once more to actually read out the string.
withOutByteString :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString

-- | Variant of withOutByteString which expects the discovered length to be
--   one byte less than the required buffer size. As required for
--   H5Fget_name
withOutByteString' :: (MonadBaseControl IO m, MonadIO m, Integral a, Integral b) => (OutArray CChar -> a -> m b) -> m ByteString

-- | In-out parameter. Memory is allocated and freed by caller.
newtype InOut a
InOut :: Ptr a -> InOut a
newtype InOutArray a
InOutArray :: Ptr a -> InOutArray a
withInOut :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m (a, b)
withInOut_ :: (Storable a, MonadBaseControl IO m, MonadIO m) => a -> (InOut a -> m b) -> m a
withInOutList :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m (Int, b)) -> m ([a], b)
withInOutList_ :: (Storable a, MonadIO m) => Int -> [a] -> (InOutArray a -> m Int) -> m [a]
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.In a)
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.InArray a)
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.InOut a)
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.InOutArray a)
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.Out a)
instance GHC.Classes.Eq (Foreign.Ptr.Conventions.OutArray a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.In a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.InArray a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.InOut a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.InOutArray a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.Out a)
instance GHC.Classes.Ord (Foreign.Ptr.Conventions.OutArray a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.In a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.InArray a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.InOut a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.InOutArray a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.Out a)
instance GHC.Internal.Show.Show (Foreign.Ptr.Conventions.OutArray a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.In a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.InArray a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.InOut a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.InOutArray a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.Out a)
instance GHC.Internal.Foreign.Storable.Storable (Foreign.Ptr.Conventions.OutArray a)
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.In
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.InArray
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.InOut
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.InOutArray
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.Out
instance Foreign.Ptr.Conventions.WrappedPtr Foreign.Ptr.Conventions.OutArray
instance Foreign.Ptr.Conventions.WrappedPtr GHC.Internal.Ptr.Ptr

module Bindings.HDF5.Raw.H5

-- | For major interface/format changes
h5_VERS_MAJOR :: Num a => a

-- | For minor interface/format changes
h5_VERS_MINOR :: Num a => a

-- | For tweaks, bug-fixes, or development
h5_VERS_RELEASE :: Num a => a

-- | For pre-releases like snap0
h5_VERS_SUBRELEASE :: String

-- | <a>h5_VERS_MAJOR</a>, et al., wrapped up as a <a>Version</a>
vers :: Version

-- | Full version string
h5_VERS_INFO :: String

-- | Check that the HDF5 library that is linked with the current executable
--   is the same version that these bindings were compiled against. Returns
--   0 on success, calls abort() on failure.
h5_check :: HErr_t

-- | Status return values. Failed integer functions in HDF5 result almost
--   always in a negative value (unsigned failing functions sometimes
--   return zero for failure) while successfull return is non-negative
--   (often zero). The negative failure value is most commonly -1, but
--   don't bet on it. The proper way to detect failure is something like:
--   
--   <pre>
--   if((dset = H5Dopen2(file, name)) &lt; 0)
--      fprintf(stderr, "unable to open the requested datasetn");
--   </pre>
newtype HErr_t
HErr_t :: Int32 -> HErr_t

-- | Boolean type. Successful return values are zero (false) or positive
--   (true). The typical true value is 1 but don't bet on it. Boolean
--   functions cannot fail. Functions that return <tt>htri_t</tt> however
--   return zero (false), positive (true), or negative (failure). The
--   proper way to test for truth from a htri_t function is:
--   
--   <pre>
--   if ((retval = H5Tcommitted(type))&gt;0) {
--     printf("data type is committedn");
--   } else if (!retval) {
--     printf("data type is not committedn");
--   } else {
--     printf("error determining whether data type is committedn");
--   }
--   </pre>
newtype HBool_t
HBool_t :: Word8 -> HBool_t
newtype HTri_t
HTri_t :: Int32 -> HTri_t

-- | C signed size type. This is a semi-standard POSIX type that isn't in
--   the <a>Foreign.C.Types</a> module. It is in <a>System.Posix.Types</a>,
--   but I'm not sure whether that module is available on all platforms.
newtype CSSize
CSSize :: Int64 -> CSSize
h5_SIZEOF_SSIZE_T :: CSize
newtype HSize_t
HSize_t :: Word64 -> HSize_t
newtype HSSize_t
HSSize_t :: Int64 -> HSSize_t
h5_SIZEOF_HSIZE_T :: CSize
h5_SIZEOF_HSSIZE_T :: CSize
hSIZE_UNDEF :: HSize_t
newtype HAddr_t
HAddr_t :: Word64 -> HAddr_t
hADDR_UNDEF :: HAddr_t
h5_SIZEOF_HADDR_T :: CSize
h5_PRINTF_HADDR_FMT :: String
hADDR_MAX :: HAddr_t

-- | Common iteration orders
newtype H5_iter_order_t
H5_iter_order_t :: Int32 -> H5_iter_order_t

-- | Unknown order
h5_ITER_UNKNOWN :: H5_iter_order_t

-- | Increasing order
h5_ITER_INC :: H5_iter_order_t

-- | Decreasing order
h5_ITER_DEC :: H5_iter_order_t

-- | No particular order, whatever is fastest
h5_ITER_NATIVE :: H5_iter_order_t

-- | Number of iteration orders
h5_ITER_N :: Num a => a

-- | Iteration callback return value indicating that iteration should stop
--   and report an error.
h5_ITER_ERROR :: HErr_t

-- | Iteration callback return value indicating that iteration should
--   continue.
h5_ITER_CONT :: HErr_t

-- | Iteration callback return value indicating that iteration should stop
--   without error.
--   
--   Actually, any postive value will cause the iterator to stop and pass
--   back that positive value to the function that called the iterator
h5_ITER_STOP :: HErr_t

-- | The types of indices on links in groups/attributes on objects.
--   Primarily used for "&lt;do&gt; &lt;foo&gt; by index" routines and for
--   iterating over links in groups/attributes on objects.
newtype H5_index_t
H5_index_t :: Int32 -> H5_index_t

-- | Unknown index type
h5_INDEX_UNKNOWN :: H5_index_t

-- | Index on names
h5_INDEX_NAME :: H5_index_t

-- | Index on creation order
h5_INDEX_CRT_ORDER :: H5_index_t

-- | Number of indices defined
h5_INDEX_N :: Num a => a

-- | Storage info struct used by <tt>H5O_info_t</tt> and
--   <tt>H5F_info_t</tt>
data H5_ih_info_t
H5_ih_info_t :: HSize_t -> HSize_t -> H5_ih_info_t
[h5_ih_info_t'index_size] :: H5_ih_info_t -> HSize_t
[h5_ih_info_t'heap_size] :: H5_ih_info_t -> HSize_t

-- | Initialize the library. This is normally called automatically, but if
--   you find that an HDF5 library function is failing inexplicably, then
--   try calling this function first.
--   
--   Return: Non-negative on success/Negative on failure
--   
--   <pre>
--   herr_t H5open(void);
--   </pre>
p'H5_ih_info_t'index_size :: Ptr H5_ih_info_t -> Ptr HSize_t
p'H5_ih_info_t'heap_size :: Ptr H5_ih_info_t -> Ptr HSize_t
h5_open :: IO HErr_t
p_H5open :: FunPtr (IO HErr_t)

-- | Terminate the library and release all resources.
--   
--   Return: Non-negative on success/Negative on failure
--   
--   <pre>
--   herr_t H5close(void);
--   </pre>
h5_close :: IO HErr_t
p_H5close :: FunPtr (IO HErr_t)

-- | Indicates that the library is not to clean up after itself when the
--   application exits by calling exit() or returning from main(). This
--   function must be called before any other HDF5 function or constant is
--   used or it will have no effect.
--   
--   If this function is used then certain memory buffers will not be
--   de-allocated nor will open files be flushed automatically. The
--   application may still call H5close() explicitly to accomplish these
--   things.
--   
--   Return: non-negative on success, negative if this function is called
--   more than once or if it is called too late.
--   
--   <pre>
--   herr_t H5dont_atexit(void);
--   </pre>
h5_dont_atexit :: IO HErr_t
p_H5dont_atexit :: FunPtr (IO HErr_t)

-- | Walks through all the garbage collection routines for the library,
--   which are supposed to free any unused memory they have allocated.
--   
--   These should probably be registered dynamicly in a linked list of
--   functions to call, but there aren't that many right now, so we
--   hard-wire them...
--   
--   Return: non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5garbage_collect(void);
--   </pre>
h5_garbage_collect :: IO HErr_t
p_H5garbage_collect :: FunPtr (IO HErr_t)

-- | Sets limits on the different kinds of free lists. Setting a value of
--   -1 for a limit means no limit of that type. These limits are global
--   for the entire library. Each "global" limit only applies to free lists
--   of that type, so if an application sets a limit of 1 MB on each of the
--   global lists, up to 3 MB of total storage might be allocated (1MB on
--   each of regular, array and block type lists).
--   
--   The settings for block free lists are duplicated to factory free
--   lists. Factory free list limits cannot be set independently currently.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> reg_global_lim :: CInt </tt></i> The limit on all
--   "regular" free list memory used</li>
--   <li><i><tt> reg_list_lim :: CInt </tt></i> The limit on memory used in
--   each "regular" free list</li>
--   <li><i><tt> arr_global_lim :: CInt </tt></i> The limit on all "array"
--   free list memory used</li>
--   <li><i><tt> arr_list_lim :: CInt </tt></i> The limit on memory used in
--   each "array" free list</li>
--   <li><i><tt> blk_global_lim :: CInt </tt></i> The limit on all "block"
--   free list memory used</li>
--   <li><i><tt> blk_list_lim :: CInt </tt></i> The limit on memory used in
--   each "block" free list</li>
--   </ul>
--   
--   Return: non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5set_free_list_limits (int reg_global_lim, int reg_list_lim,
--           int arr_global_lim, int arr_list_lim, int blk_global_lim,
--           int blk_list_lim);
--   </pre>
h5_set_free_list_limits :: CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO HErr_t
p_H5set_free_list_limits :: FunPtr (CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO HErr_t)

-- | Returns the library version numbers through arguments. MAJNUM will be
--   the major revision number of the library, MINNUM the minor revision
--   number, and RELNUM the release revision number.
--   
--   Note: When printing an HDF5 version number it should be printed as
--   
--   <pre>
--   printf("%u.%u.%u", maj, min, rel)		or
--   printf("version %u.%u release %u", maj, min, rel)
--   </pre>
--   
--   Return: Non-negative on success/Negative on failure
--   
--   <pre>
--   herr_t H5get_libversion(unsigned *majnum, unsigned *minnum,
--           unsigned *relnum);
--   </pre>
h5_get_libversion :: Out CUInt -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5get_libversion :: FunPtr (Out CUInt -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Purpose: Verifies that the arguments match the version numbers
--   compiled into the library. This function is intended to be called from
--   user to verify that the versions of header files compiled into the
--   application match the version of the hdf5 library.
--   
--   Return: Success: 0, Failure: calls abort()
--   
--   <pre>
--   herr_t H5check_version(unsigned majnum, unsigned minnum,
--           unsigned relnum);
--   </pre>
h5_check_version :: CUInt -> CUInt -> CUInt -> IO HErr_t
p_H5check_version :: FunPtr (CUInt -> CUInt -> CUInt -> IO HErr_t)
instance GHC.Internal.Bits.Bits Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Bits.Bits Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Bits.Bits Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Bits.Bits Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Bits.Bits Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Enum.Enum Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Enum.Enum Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Enum.Enum Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Enum.Enum Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Enum.Enum Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.CSSize
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.H5_ih_info_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HBool_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5.HTri_t
instance GHC.Internal.Real.Integral Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Real.Integral Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Real.Integral Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Real.Integral Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Real.Integral Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Num.Num Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Num.Num Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Num.Num Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Num.Num Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Num.Num Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5.CSSize
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Real.Real Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Real.Real Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Real.Real Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Real.Real Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Real.Real Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.H5_ih_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.H5_index_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.H5_iter_order_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HBool_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5.HTri_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.CSSize
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.H5_ih_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.H5_index_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.H5_iter_order_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HAddr_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HBool_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HErr_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HSSize_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HSize_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5.HTri_t

module Bindings.HDF5.Raw.H5I

-- | Library type values
newtype H5I_type_t
H5I_type_t :: Int32 -> H5I_type_t

-- | uninitialized type
h5i_UNINIT :: H5I_type_t

-- | invalid Type
h5i_BADID :: H5I_type_t

-- | type ID for File objects
h5i_FILE :: H5I_type_t

-- | type ID for Group objects
h5i_GROUP :: H5I_type_t

-- | type ID for Datatype objects
h5i_DATATYPE :: H5I_type_t

-- | type ID for Dataspace objects
h5i_DATASPACE :: H5I_type_t

-- | type ID for Dataset objects
h5i_DATASET :: H5I_type_t

-- | type ID for Attribute objects
h5i_ATTR :: H5I_type_t

-- | type ID for virtual file layer
h5i_VFL :: H5I_type_t

-- | type ID for generic property list classes
h5i_GENPROP_CLS :: H5I_type_t

-- | type ID for generic property lists
h5i_GENPROP_LST :: H5I_type_t

-- | type ID for error classes
h5i_ERROR_CLASS :: H5I_type_t

-- | type ID for error messages
h5i_ERROR_MSG :: H5I_type_t

-- | type ID for error stacks
h5i_ERROR_STACK :: H5I_type_t

-- | number of library types
h5i_NTYPES :: Num a => a

-- | Type of atoms to return to users
newtype HId_t
HId_t :: Int64 -> HId_t
h5_SIZEOF_HID_T :: CSize

-- | An invalid object ID. This is also negative for error return.
h5i_INVALID_HID :: HId_t

-- | Function for freeing objects. This function will be called with an
--   object ID type number and a pointer to the object. The function should
--   free the object and return non-negative to indicate that the object
--   can be removed from the ID type. If the function returns negative
--   (failure) then the object will remain in the ID type.
type H5I_free_t a = FunPtr In a -> IO HErr_t

-- | Type of the function to compare objects &amp; keys
type H5I_search_func_t a = FunPtr In a -> HId_t -> In a -> IO CInt

-- | Registers an <tt>object</tt> in a 'type' and returns an ID for it.
--   This routine does _not_ check for unique-ness of the objects, if you
--   register an object twice, you will get two different IDs for it. This
--   routine does make certain that each ID in a type is unique. IDs are
--   created by getting a unique number for the type the ID is in and
--   incorporating the type into the ID which is returned to the user.
--   
--   Return: Success: New object id. Failure: Negative
--   
--   <pre>
--   hid_t H5Iregister(H5I_type_t type, const void *object);
--   </pre>
h5i_register :: H5I_type_t -> In a -> IO HId_t
p_H5Iregister :: FunPtr (H5I_type_t -> In a -> IO HId_t)

-- | Find an object pointer for the specified ID, verifying that it is in a
--   particular type.
--   
--   On success, returns a non-null object pointer associated with the
--   specified ID. On failure, returns NULL.
--   
--   <pre>
--   void *H5Iobject_verify(hid_t id, H5I_type_t id_type);
--   </pre>
h5i_object_verify :: HId_t -> H5I_type_t -> IO (Ptr a)
p_H5Iobject_verify :: FunPtr (HId_t -> H5I_type_t -> IO (Ptr a))

-- | Removes the specified ID from its type, first checking that the type
--   of the ID and the type type are the same.
--   
--   On success, returns a pointer to the object that was removed, the same
--   pointer which would have been found by calling <tt>h5i_object</tt>. On
--   failure, returns NULL.
--   
--   <pre>
--   void *H5Iremove_verify(hid_t id, H5I_type_t id_type);
--   </pre>
h5i_remove_verify :: HId_t -> H5I_type_t -> IO (Ptr a)
p_H5Iremove_verify :: FunPtr (HId_t -> H5I_type_t -> IO (Ptr a))

-- | Retrieves the number of references outstanding for a type. Returns
--   negative on failure.
--   
--   <pre>
--   H5I_type_t H5Iget_type(hid_t id);
--   </pre>
h5i_get_type :: HId_t -> IO H5I_type_t
p_H5Iget_type :: FunPtr (HId_t -> IO H5I_type_t)

-- | Obtains the file ID given an object ID. User has to close this ID.
--   Returns a negative value on failure.
--   
--   <pre>
--   hid_t H5Iget_file_id(hid_t id);
--   </pre>
h5i_get_file_id :: HId_t -> IO HId_t
p_H5Iget_file_id :: FunPtr (HId_t -> IO HId_t)

-- | Gets a name of an object from its ID.
--   
--   If <tt>name</tt> is non-NULL then write up to <tt>size</tt> bytes into
--   that buffer and always return the length of the entry name. Otherwise
--   <tt>size</tt> is ignored and the function does not store the name,
--   just returning the number of characters required to store the name. If
--   an error occurs then the buffer pointed to by <tt>name</tt> (NULL or
--   non-NULL) is unchanged and the function returns a negative value. If a
--   zero is returned for the name's length, then there is no name
--   associated with the ID.
--   
--   <pre>
--   ssize_t H5Iget_name(hid_t id, char *name/*out*/, size_t size);
--   </pre>
h5i_get_name :: HId_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Iget_name :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

-- | Increments the number of references outstanding for an ID.
--   
--   On success, returns the new reference count. On failure, returns a
--   negative value.
--   
--   <pre>
--   int H5Iinc_ref(hid_t id);
--   </pre>
h5i_inc_ref :: HId_t -> IO CInt
p_H5Iinc_ref :: FunPtr (HId_t -> IO CInt)

-- | Decrements the number of references outstanding for an ID. If the
--   reference count for an ID reaches zero, the object will be closed.
--   
--   On success, returns the new reference count. On failure, returns a
--   negative value.
--   
--   <pre>
--   int H5Idec_ref(hid_t id);
--   </pre>
h5i_dec_ref :: HId_t -> IO CInt
p_H5Idec_ref :: FunPtr (HId_t -> IO CInt)

-- | Retrieves the number of references outstanding for an ID. Returns a
--   negative value on failure.
--   
--   <pre>
--   int H5Iget_ref(hid_t id);
--   </pre>
h5i_get_ref :: HId_t -> IO CInt
p_H5Iget_ref :: FunPtr (HId_t -> IO CInt)

-- | Creates a new type of ID's to give out. A specific number
--   (<tt>reserved</tt>) of type entries may be reserved to enable
--   "constant" values to be handed out which are valid IDs in the type,
--   but which do not map to any data structures and are not allocated
--   dynamically later. <tt>hash_size</tt> is the minimum hash table size
--   to use for the type. <tt>free_func</tt> is called with an object
--   pointer when the object is removed from the type.
--   
--   On success, returns the type ID of the new type. On failure, returns
--   <a>h5i_BADID</a>.
--   
--   <pre>
--   H5I_type_t H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func);
--   </pre>
h5i_register_type :: CSize -> CUInt -> H5I_free_t a -> IO H5I_type_t
p_H5Iregister_type :: FunPtr (CSize -> CUInt -> H5I_free_t a -> IO H5I_type_t)

-- | Removes all objects from the type, calling the free function for each
--   object regardless of the reference count.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Iclear_type(H5I_type_t type, hbool_t force);
--   </pre>
h5i_clear_type :: H5I_type_t -> HBool_t -> IO HErr_t
p_H5Iclear_type :: FunPtr (H5I_type_t -> HBool_t -> IO HErr_t)

-- | Destroys a type along with all atoms in that type regardless of their
--   reference counts. Destroying IDs involves calling the free-func for
--   each ID's object and then adding the ID struct to the ID free list.
--   
--   Returns zero on success, negative on failure.
--   
--   herr_t H5Idestroy_type(H5I_type_t type);
h5i_destroy_type :: H5I_type_t -> IO HErr_t
p_H5Idestroy_type :: FunPtr (H5I_type_t -> IO HErr_t)

-- | Increments the number of references outstanding for an ID type.
--   
--   On success, returns the new reference count. On failure, returns a
--   negative value.
--   
--   <pre>
--   int H5Iinc_type_ref(H5I_type_t type);
--   </pre>
h5i_inc_type_ref :: H5I_type_t -> IO CInt
p_H5Iinc_type_ref :: FunPtr (H5I_type_t -> IO CInt)

-- | Decrements the reference count on an entire type of IDs. If the type
--   reference count becomes zero then the type is destroyed along with all
--   atoms in that type regardless of their reference counts. Destroying
--   IDs involves calling the free-func for each ID's object and then
--   adding the ID struct to the ID free list.
--   
--   Returns the number of references to the type on success; a return
--   value of 0 means that the type will have to be re-initialized before
--   it can be used again (and should probably be set to H5I_UNINIT).
--   
--   <pre>
--   int H5Idec_type_ref(H5I_type_t type);
--   </pre>
h5i_dec_type_ref :: H5I_type_t -> IO CInt
p_H5Idec_type_ref :: FunPtr (H5I_type_t -> IO CInt)

-- | Retrieves the number of references outstanding for a type. Returns a
--   negative value on failure.
--   
--   <pre>
--   int H5Iget_type_ref(H5I_type_t type);
--   </pre>
h5i_get_type_ref :: H5I_type_t -> IO CInt
p_H5Iget_type_ref :: FunPtr (H5I_type_t -> IO CInt)

-- | Apply function <tt>func</tt> to each member of type 'type' and return
--   a pointer to the first object for which <tt>func</tt> returns
--   non-zero. The <tt>func</tt> should take a pointer to the object and
--   the <tt>key</tt> as arguments and return non-zero to terminate the
--   search (zero to continue).
--   
--   Limitation: Currently there is no way to start searching from where a
--   previous search left off.
--   
--   Returns the first object in the type for which <tt>func</tt> returns
--   non-zero. Returns NULL if <tt>func</tt> returned zero for every object
--   in the type.
--   
--   <pre>
--   void *H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key);
--   </pre>
h5i_search :: H5I_type_t -> H5I_search_func_t a -> In a -> IO (Ptr a)
p_H5Isearch :: FunPtr (H5I_type_t -> H5I_search_func_t a -> In a -> IO (Ptr a))

-- | Returns the number of members in a type. The public interface throws
--   an error if the supplied type does not exist. This is different than
--   the private interface, which will just return 0.
--   
--   Returns zero on success, negative on failure.
--   
--   <pre>
--   herr_t H5Inmembers(H5I_type_t type, hsize_t *num_members);
--   </pre>
h5i_nmembers :: H5I_type_t -> Out HSize_t -> IO HErr_t
p_H5Inmembers :: FunPtr (H5I_type_t -> Out HSize_t -> IO HErr_t)

-- | Check whether the given type is currently registered with the library.
--   
--   <pre>
--   htri_t H5Itype_exists(H5I_type_t type);
--   </pre>
h5i_type_exists :: H5I_type_t -> IO HTri_t
p_H5Itype_exists :: FunPtr (H5I_type_t -> IO HTri_t)

-- | Check if the given id is valid. An id is valid if it is in use and has
--   an application reference count of at least 1.
--   
--   <pre>
--   htri_t H5Iis_valid(hid_t id);
--   </pre>
h5i_is_valid :: HId_t -> IO HTri_t
p_H5Iis_valid :: FunPtr (HId_t -> IO HTri_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5I.H5I_type_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5I.HId_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5I.HId_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5I.H5I_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5I.HId_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5I.H5I_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5I.HId_t

module Bindings.HDF5.Raw.H5Z

-- | Filter identifiers. Values 0 through 255 are for filters defined by
--   the HDF5 library. Values 256 through 511 are available for testing new
--   filters. Subsequent values should be obtained from the HDF5
--   development team at <a>mailto:hdf5dev@ncsa.uiuc.edu</a>. These values
--   will never change because they appear in the HDF5 files.
newtype H5Z_filter_t
H5Z_filter_t :: Int32 -> H5Z_filter_t

-- | no filter
h5z_FILTER_ERROR :: H5Z_filter_t

-- | reserved indefinitely
h5z_FILTER_NONE :: H5Z_filter_t

-- | deflation like gzip
h5z_FILTER_DEFLATE :: H5Z_filter_t

-- | shuffle the data
h5z_FILTER_SHUFFLE :: H5Z_filter_t

-- | fletcher32 checksum of EDC
h5z_FILTER_FLETCHER32 :: H5Z_filter_t

-- | szip compression
h5z_FILTER_SZIP :: H5Z_filter_t

-- | nbit compression
h5z_FILTER_NBIT :: H5Z_filter_t

-- | scale+offset compression
h5z_FILTER_SCALEOFFSET :: H5Z_filter_t

-- | filter ids below this value are reserved for library use
h5z_FILTER_RESERVED :: H5Z_filter_t

-- | maximum filter id
h5z_FILTER_MAX :: H5Z_filter_t

-- | Symbol to remove all filters in <tt>h5p_remove_filter</tt>
h5z_FILTER_ALL :: H5Z_filter_t

-- | Maximum number of filters allowed in a pipeline (should probably be
--   allowed to be an unlimited amount, but currently each filter uses a
--   bit in a 32-bit field, so the format would have to be changed to
--   accomodate that)
h5z_MAX_NFILTERS :: Num a => a

-- | definition flag mask
h5z_FLAG_DEFMASK :: Num a => a

-- | filter is mandatory
h5z_FLAG_MANDATORY :: Num a => a

-- | filter is optional
h5z_FLAG_OPTIONAL :: Num a => a

-- | invocation flag mask
h5z_FLAG_INVMASK :: Num a => a

-- | reverse direction; read
h5z_FLAG_REVERSE :: Num a => a

-- | skip EDC filters for read
h5z_FLAG_SKIP_EDC :: Num a => a
h5_SZIP_ALLOW_K13_OPTION_MASK :: Num a => a
h5_SZIP_CHIP_OPTION_MASK :: Num a => a
h5_SZIP_EC_OPTION_MASK :: Num a => a
h5_SZIP_NN_OPTION_MASK :: Num a => a
h5_SZIP_MAX_PIXELS_PER_BLOCK :: Num a => a

-- | Number of parameters that users can set
h5z_SHUFFLE_USER_NPARMS :: Num a => a

-- | Total number of parameters for filter
h5z_SHUFFLE_TOTAL_NPARMS :: Num a => a

-- | Number of parameters that users can set
h5z_SZIP_USER_NPARMS :: Num a => a

-- | Total number of parameters for filter
h5z_SZIP_TOTAL_NPARMS :: Num a => a

-- | "User" parameter for option mask
h5z_SZIP_PARM_MASK :: Num a => a

-- | "User" parameter for pixels-per-block
h5z_SZIP_PARM_PPB :: Num a => a

-- | "Local" parameter for bits-per-pixel
h5z_SZIP_PARM_BPP :: Num a => a

-- | "Local" parameter for pixels-per-scanline
h5z_SZIP_PARM_PPS :: Num a => a

-- | Number of parameters that users can set
h5z_NBIT_USER_NPARMS :: Num a => a

-- | Number of parameters that users can set
h5z_SCALEOFFSET_USER_NPARMS :: Num a => a
h5z_SO_INT_MINBITS_DEFAULT :: Num a => a
newtype H5Z_SO_scale_type_t
H5Z_SO_scale_type_t :: Word32 -> H5Z_SO_scale_type_t
h5z_SO_FLOAT_DSCALE :: H5Z_SO_scale_type_t
h5z_SO_FLOAT_ESCALE :: H5Z_SO_scale_type_t
h5z_SO_INT :: H5Z_SO_scale_type_t

-- | Current version of the H5Z_class_t struct
h5z_CLASS_T_VERS :: Num a => a

-- | Values to decide if EDC is enabled for reading data
newtype H5Z_EDC_t
H5Z_EDC_t :: Int32 -> H5Z_EDC_t
h5z_ERROR_EDC :: H5Z_EDC_t
h5z_DISABLE_EDC :: H5Z_EDC_t
h5z_ENABLE_EDC :: H5Z_EDC_t
h5z_NO_EDC :: H5Z_EDC_t
h5z_FILTER_CONFIG_ENCODE_ENABLED :: Num a => a
h5z_FILTER_CONFIG_DECODE_ENABLED :: Num a => a

-- | Return values for filter callback function
newtype H5Z_cb_return_t
H5Z_cb_return_t :: Int32 -> H5Z_cb_return_t
h5z_CB_ERROR :: H5Z_cb_return_t

-- | I/O should fail if filter fails.
h5z_CB_FAIL :: H5Z_cb_return_t

-- | I/O continues if filter fails.
h5z_CB_CONT :: H5Z_cb_return_t
h5z_CB_NO :: H5Z_cb_return_t

-- | Filter callback function definition
--   
--   <pre>
--   typedef H5Z_cb_return_t (*H5Z_filter_func_t)(H5Z_filter_t filter, void* buf,
--          size_t buf_size, void* op_data);
--   </pre>
type H5Z_filter_func_t a b = FunPtr H5Z_filter_t -> InOutArray a -> CSize -> InOut b -> IO H5Z_cb_return_t

-- | Before a dataset gets created, the "can_apply" callbacks for any
--   filters used in the dataset creation property list are called with the
--   dataset's dataset creation property list, the dataset's datatype and a
--   dataspace describing a chunk (for chunked dataset storage).
--   
--   The "can_apply" callback must determine if the combination of the
--   dataset creation property list setting, the datatype and the dataspace
--   represent a valid combination to apply this filter to. For example,
--   some cases of invalid combinations may involve the filter not
--   operating correctly on certain datatypes (or certain datatype sizes),
--   or certain sizes of the chunk dataspace.
--   
--   The "can_apply" callback can be the NULL pointer, in which case, the
--   library will assume that it can apply to any combination of dataset
--   creation property list values, datatypes and dataspaces.
--   
--   The "can_apply" callback returns positive a valid combination, zero
--   for an invalid combination and negative for an error.
--   
--   <pre>
--   typedef htri_t (*H5Z_can_apply_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id);
--   </pre>
type H5Z_can_apply_func_t = FunPtr HId_t -> HId_t -> HId_t -> IO HTri_t
mk_H5Z_can_apply_func_t :: (HId_t -> HId_t -> HId_t -> IO HTri_t) -> IO H5Z_can_apply_func_t

-- | After the "can_apply" callbacks are checked for new datasets, the
--   "set_local" callbacks for any filters used in the dataset creation
--   property list are called. These callbacks receive the dataset's
--   private copy of the dataset creation property list passed in to
--   H5Dcreate (i.e. not the actual property list passed in to H5Dcreate)
--   and the datatype ID passed in to H5Dcreate (which is not copied and
--   should not be modified) and a dataspace describing the chunk (for
--   chunked dataset storage) (which should also not be modified).
--   
--   The "set_local" callback must set any parameters that are specific to
--   this dataset, based on the combination of the dataset creation
--   property list values, the datatype and the dataspace. For example,
--   some filters perform different actions based on different datatypes
--   (or datatype sizes) or different number of dimensions or dataspace
--   sizes.
--   
--   The "set_local" callback can be the NULL pointer, in which case, the
--   library will assume that there are no dataset-specific settings for
--   this filter.
--   
--   The "set_local" callback must return non-negative on success and
--   negative for an error.
--   
--   <pre>
--   typedef herr_t (*H5Z_set_local_func_t)(hid_t dcpl_id, hid_t type_id, hid_t space_id);
--   </pre>
mK_H5Z_can_apply_func_t :: H5Z_can_apply_func_t -> HId_t -> HId_t -> HId_t -> IO HTri_t
type H5Z_set_local_func_t = FunPtr HId_t -> HId_t -> HId_t -> IO HErr_t
mk_H5Z_set_local_func_t :: (HId_t -> HId_t -> HId_t -> IO HErr_t) -> IO H5Z_set_local_func_t

-- | A filter gets definition flags and invocation flags (defined above),
--   the client data array and size defined when the filter was added to
--   the pipeline, the size in bytes of the data on which to operate, and
--   pointers to a buffer and its allocated size.
--   
--   The filter should store the result in the supplied buffer if possible,
--   otherwise it can allocate a new buffer, freeing the original. The
--   allocated size of the new buffer should be returned through the
--   <tt>buf_size</tt> pointer and the new buffer through the BUF pointer.
--   
--   The return value from the filter is the number of bytes in the output
--   buffer. If an error occurs then the function should return zero and
--   leave all pointer arguments unchanged.
--   
--   <pre>
--   typedef size_t (*H5Z_func_t)(unsigned int flags, size_t cd_nelmts,
--          const unsigned int cd_values[], size_t nbytes,
--          size_t *buf_size, void **buf);
--   </pre>
mK_H5Z_set_local_func_t :: H5Z_set_local_func_t -> HId_t -> HId_t -> HId_t -> IO HErr_t
type H5Z_func_t a = FunPtr CUInt -> CSize -> InArray CUInt -> CSize -> InOut CSize -> InOut Ptr a -> IO CSize

-- | The filter table maps filter identification numbers to structs that
--   contain a pointers to the filter function and timing statistics.
--   
--   Version number of the H5Z_class_t struct
--   
--   Filter ID number
--   
--   Does this filter have an encoder?
--   
--   Does this filter have a decoder?
--   
--   Comment for debugging
--   
--   The "can apply" callback for a filter
--   
--   The "set local" callback for a filter
--   
--   The actual filter function
data H5Z_class2_t
H5Z_class2_t :: CInt -> H5Z_filter_t -> CUInt -> CUInt -> CString -> H5Z_can_apply_func_t -> H5Z_set_local_func_t -> H5Z_func_t () -> H5Z_class2_t
[h5z_class2_t'version] :: H5Z_class2_t -> CInt
[h5z_class2_t'id] :: H5Z_class2_t -> H5Z_filter_t
[h5z_class2_t'encoder_present] :: H5Z_class2_t -> CUInt
[h5z_class2_t'decoder_present] :: H5Z_class2_t -> CUInt
[h5z_class2_t'name] :: H5Z_class2_t -> CString
[h5z_class2_t'can_apply] :: H5Z_class2_t -> H5Z_can_apply_func_t
[h5z_class2_t'set_local] :: H5Z_class2_t -> H5Z_set_local_func_t
[h5z_class2_t'filter] :: H5Z_class2_t -> H5Z_func_t ()

-- | This function registers a new filter.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Zregister(const void *cls);
--   </pre>
h5z_register :: In H5Z_class2_t -> IO HErr_t
p_H5Zregister :: FunPtr (In H5Z_class2_t -> IO HErr_t)

-- | This function unregisters a filter.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Zunregister(H5Z_filter_t id);
--   </pre>
p'H5Z_class2_t'version :: Ptr H5Z_class2_t -> Ptr CInt
p'H5Z_class2_t'id :: Ptr H5Z_class2_t -> Ptr H5Z_filter_t
p'H5Z_class2_t'encoder_present :: Ptr H5Z_class2_t -> Ptr CUInt
h5z_unregister :: H5Z_filter_t -> IO HErr_t

-- | Check if a filter is available
--   
--   <pre>
--   htri_t H5Zfilter_avail(H5Z_filter_t id);
--   </pre>
p'H5Z_class2_t'decoder_present :: Ptr H5Z_class2_t -> Ptr CUInt
p_H5Zunregister :: FunPtr (H5Z_filter_t -> IO HErr_t)
p'H5Z_class2_t'name :: Ptr H5Z_class2_t -> Ptr CString
h5z_filter_avail :: H5Z_filter_t -> IO HTri_t
p'H5Z_class2_t'can_apply :: Ptr H5Z_class2_t -> Ptr H5Z_can_apply_func_t
p_H5Zfilter_avail :: FunPtr (H5Z_filter_t -> IO HTri_t)

-- | Gets information about a pipeline data filter and stores it in
--   <tt>filter_config_flags</tt>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Zget_filter_info(H5Z_filter_t filter, unsigned int *filter_config_flags);
--   </pre>
p'H5Z_class2_t'set_local :: Ptr H5Z_class2_t -> Ptr H5Z_set_local_func_t
p'H5Z_class2_t'filter :: Ptr H5Z_class2_t -> Ptr (H5Z_func_t ())
h5z_get_filter_info :: H5Z_filter_t -> Out CUInt -> IO HErr_t
p_H5Zget_filter_info :: FunPtr (H5Z_filter_t -> Out CUInt -> IO HErr_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5Z.H5Z_class2_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5Z.H5Z_filter_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5Z.H5Z_EDC_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5Z.H5Z_SO_scale_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5Z.H5Z_cb_return_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5Z.H5Z_class2_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5Z.H5Z_filter_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5Z.H5Z_EDC_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5Z.H5Z_SO_scale_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5Z.H5Z_cb_return_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5Z.H5Z_class2_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5Z.H5Z_filter_t

module Bindings.HDF5.Raw.H5T

-- | These are the various classes of datatypes
--   
--   If this goes over 16 types (0-15), the file format will need to
--   change)
newtype H5T_class_t
H5T_class_t :: Int32 -> H5T_class_t

-- | error
h5t_NO_CLASS :: H5T_class_t

-- | integer types
h5t_INTEGER :: H5T_class_t

-- | floating-point types
h5t_FLOAT :: H5T_class_t

-- | date and time types
h5t_TIME :: H5T_class_t

-- | character string types
h5t_STRING :: H5T_class_t

-- | bit field types
h5t_BITFIELD :: H5T_class_t

-- | opaque types
h5t_OPAQUE :: H5T_class_t

-- | compound types
h5t_COMPOUND :: H5T_class_t

-- | reference types
h5t_REFERENCE :: H5T_class_t

-- | enumeration types
h5t_ENUM :: H5T_class_t

-- | Variable-Length types
h5t_VLEN :: H5T_class_t

-- | Array types
h5t_ARRAY :: H5T_class_t

-- | The number of basic datatypes
h5t_NCLASSES :: Num a => a

-- | Byte orders
newtype H5T_order_t
H5T_order_t :: Int32 -> H5T_order_t

-- | error
h5t_ORDER_ERROR :: H5T_order_t

-- | little endian
h5t_ORDER_LE :: H5T_order_t

-- | bit endian
h5t_ORDER_BE :: H5T_order_t

-- | VAX mixed endian
h5t_ORDER_VAX :: H5T_order_t

-- | Compound type with mixed member orders
h5t_ORDER_MIXED :: H5T_order_t

-- | no particular order (strings, bits,..)
h5t_ORDER_NONE :: H5T_order_t

-- | Types of integer sign schemes
newtype H5T_sign_t
H5T_sign_t :: Int32 -> H5T_sign_t

-- | error
h5t_SGN_ERROR :: H5T_sign_t

-- | this is an unsigned type
h5t_SGN_NONE :: H5T_sign_t

-- | two's complement
h5t_SGN_2 :: H5T_sign_t

-- | The number of recognized integer sign schemes
h5t_NSGN :: Num a => a

-- | Floating-point normalization schemes
newtype H5T_norm_t
H5T_norm_t :: Int32 -> H5T_norm_t

-- | error
h5t_NORM_ERROR :: H5T_norm_t

-- | msb of mantissa isn't stored, always 1
h5t_NORM_IMPLIED :: H5T_norm_t

-- | msb of mantissa is always 1
h5t_NORM_MSBSET :: H5T_norm_t

-- | not normalized
h5t_NORM_NONE :: H5T_norm_t

-- | Character set to use for text strings. Do not change these values
--   since they appear in HDF5 files!
newtype H5T_cset_t
H5T_cset_t :: Int32 -> H5T_cset_t

-- | error
h5t_CSET_ERROR :: H5T_cset_t

-- | US ASCII
h5t_CSET_ASCII :: H5T_cset_t

-- | UTF-8 Unicode encoding
h5t_CSET_UTF8 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_2 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_3 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_4 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_5 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_6 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_7 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_8 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_9 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_10 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_11 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_12 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_13 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_14 :: H5T_cset_t

-- | reserved for later use
h5t_CSET_RESERVED_15 :: H5T_cset_t

-- | Number of character sets actually defined
h5t_NCSET :: Num a => a

-- | Type of padding to use in character strings. Do not change these
--   values since they appear in HDF5 files!
newtype H5T_str_t
H5T_str_t :: Int32 -> H5T_str_t

-- | error
h5t_STR_ERROR :: H5T_str_t

-- | null terminate like in C
h5t_STR_NULLTERM :: H5T_str_t

-- | pad with nulls
h5t_STR_NULLPAD :: H5T_str_t

-- | pad with spaces like in Fortran
h5t_STR_SPACEPAD :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_3 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_4 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_5 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_6 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_7 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_8 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_9 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_10 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_11 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_12 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_13 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_14 :: H5T_str_t

-- | reserved for later use
h5t_STR_RESERVED_15 :: H5T_str_t

-- | num <a>H5T_str_t</a> types actually defined
h5t_NSTR :: Num a => a

-- | Type of padding to use in other atomic types
newtype H5T_pad_t
H5T_pad_t :: Int32 -> H5T_pad_t

-- | error
h5t_PAD_ERROR :: H5T_pad_t

-- | always set to zero
h5t_PAD_ZERO :: H5T_pad_t

-- | always set to one
h5t_PAD_ONE :: H5T_pad_t

-- | set to background value
h5t_PAD_BACKGROUND :: H5T_pad_t

-- | Number of valid <a>H5T_pad_t</a> values.
h5t_NPAD :: Num a => a

-- | Commands sent to conversion functions
newtype H5T_cmd_t
H5T_cmd_t :: Word32 -> H5T_cmd_t

-- | query and/or initialize private data
h5t_CONV_INIT :: H5T_cmd_t

-- | convert data from source to dest datatype
h5t_CONV_CONV :: H5T_cmd_t

-- | function is being removed from path
h5t_CONV_FREE :: H5T_cmd_t

-- | How is the <tt>bkg</tt> buffer used by the conversion function?
newtype H5T_bkg_t
H5T_bkg_t :: Word32 -> H5T_bkg_t

-- | background buffer is not needed, send NULL
h5t_BKG_NO :: H5T_bkg_t

-- | bkg buffer used as temp storage only
h5t_BKG_TEMP :: H5T_bkg_t

-- | init bkg buf with data before conversion
h5t_BKG_YES :: H5T_bkg_t

-- | Type conversion client data
data H5T_cdata_t a
H5T_cdata_t :: H5T_cmd_t -> H5T_bkg_t -> HBool_t -> Ptr a -> H5T_cdata_t a

-- | what should the conversion function do?
[h5t_cdata_t'command] :: H5T_cdata_t a -> H5T_cmd_t

-- | is the background buffer needed?
[h5t_cdata_t'need_bkg] :: H5T_cdata_t a -> H5T_bkg_t

-- | recalculate private data
[h5t_cdata_t'recalc] :: H5T_cdata_t a -> HBool_t

-- | private data
[h5t_cdata_t'priv] :: H5T_cdata_t a -> Ptr a

-- | Conversion function persistence
newtype H5T_pers_t
H5T_pers_t :: Int32 -> H5T_pers_t

-- | wild card
h5t_PERS_DONTCARE :: H5T_pers_t

-- | hard conversion function
h5t_PERS_HARD :: H5T_pers_t

-- | soft conversion function
h5t_PERS_SOFT :: H5T_pers_t

-- | The order to retrieve atomic native datatype
newtype H5T_direction_t
H5T_direction_t :: Word32 -> H5T_direction_t

-- | default direction is inscendent
h5t_DIR_DEFAULT :: H5T_direction_t

-- | in inscendent order
h5t_DIR_ASCEND :: H5T_direction_t

-- | in descendent order
h5t_DIR_DESCEND :: H5T_direction_t

-- | The exception type passed into the conversion callback function
newtype H5T_conv_except_t
H5T_conv_except_t :: Word32 -> H5T_conv_except_t

-- | source value is greater than destination's range
h5t_CONV_EXCEPT_RANGE_HI :: H5T_conv_except_t

-- | source value is less than destination's range
h5t_CONV_EXCEPT_RANGE_LOW :: H5T_conv_except_t

-- | source value loses precision in destination
h5t_CONV_EXCEPT_PRECISION :: H5T_conv_except_t

-- | source value is truncated in destination
h5t_CONV_EXCEPT_TRUNCATE :: H5T_conv_except_t

-- | source value is positive infinity(floating number)
h5t_CONV_EXCEPT_PINF :: H5T_conv_except_t

-- | source value is negative infinity(floating number)
h5t_CONV_EXCEPT_NINF :: H5T_conv_except_t

-- | source value is NaN(floating number)
h5t_CONV_EXCEPT_NAN :: H5T_conv_except_t

-- | The return value from conversion callback function
--   <tt>h5t_conv_except_func_t</tt>
newtype H5T_conv_ret_t
H5T_conv_ret_t :: Int32 -> H5T_conv_ret_t

-- | abort conversion
h5t_CONV_ABORT :: H5T_conv_ret_t

-- | callback function failed to handle the exception
h5t_CONV_UNHANDLED :: H5T_conv_ret_t

-- | callback function handled the exception successfully
h5t_CONV_HANDLED :: H5T_conv_ret_t

-- | Variable Length Datatype struct in memory (This is only used for VL
--   sequences, not VL strings, which are stored in char *'s)
--   
--   Length of VL data (in base type units)
--   
--   Pointer to VL data
data HVl_t
HVl_t :: CSize -> Ptr () -> HVl_t
[hvl_t'len] :: HVl_t -> CSize
[hvl_t'p] :: HVl_t -> Ptr ()
p'hvl_t'len :: Ptr HVl_t -> Ptr CSize

-- | Indicate that a string is variable length (null-terminated in C,
--   instead of fixed length)
h5t_VARIABLE :: CSize
p'hvl_t'p :: Ptr HVl_t -> Ptr (Ptr ())

-- | Maximum length of an opaque tag.
h5t_OPAQUE_TAG_MAX :: Num a => a
type H5T_conv_t a b conversionData = FunPtr HId_t -> HId_t -> Ptr H5T_cdata_t conversionData -> CSize -> CSize -> CSize -> InOutArray a -> InArray b -> HId_t -> IO HErr_t

-- | Exception handler. If an exception like overflow happens during
--   conversion, this function is called if it's registered through
--   <tt>h5p_set_type_conv_cb</tt>.
type H5T_conv_except_func_t a userData = FunPtr H5T_conv_except_t -> HId_t -> HId_t -> In a -> In a -> InOut userData -> IO H5T_conv_ret_t
h5t_IEEE_F32BE :: HId_t
h5t_IEEE_F32LE :: HId_t
h5t_IEEE_F64BE :: HId_t
h5t_IEEE_F64LE :: HId_t
h5t_STD_I8BE :: HId_t
h5t_STD_I8LE :: HId_t
h5t_STD_I16BE :: HId_t
h5t_STD_I16LE :: HId_t
h5t_STD_I32BE :: HId_t
h5t_STD_I32LE :: HId_t
h5t_STD_I64BE :: HId_t
h5t_STD_I64LE :: HId_t
h5t_STD_U8BE :: HId_t
h5t_STD_U8LE :: HId_t
h5t_STD_U16BE :: HId_t
h5t_STD_U16LE :: HId_t
h5t_STD_U32BE :: HId_t
h5t_STD_U32LE :: HId_t
h5t_STD_U64BE :: HId_t
h5t_STD_U64LE :: HId_t
h5t_STD_B8BE :: HId_t
h5t_STD_B8LE :: HId_t
h5t_STD_B16BE :: HId_t
h5t_STD_B16LE :: HId_t
h5t_STD_B32BE :: HId_t
h5t_STD_B32LE :: HId_t
h5t_STD_B64BE :: HId_t
h5t_STD_B64LE :: HId_t
h5t_STD_REF_OBJ :: HId_t
h5t_STD_REF_DSETREG :: HId_t
h5t_UNIX_D32BE :: HId_t
h5t_UNIX_D32LE :: HId_t
h5t_UNIX_D64BE :: HId_t
h5t_UNIX_D64LE :: HId_t
h5t_C_S1 :: HId_t
h5t_FORTRAN_S1 :: HId_t
h5t_INTEL_I8 :: HId_t
h5t_INTEL_I16 :: HId_t
h5t_INTEL_I32 :: HId_t
h5t_INTEL_I64 :: HId_t
h5t_INTEL_U8 :: HId_t
h5t_INTEL_U16 :: HId_t
h5t_INTEL_U32 :: HId_t
h5t_INTEL_U64 :: HId_t
h5t_INTEL_B8 :: HId_t
h5t_INTEL_B16 :: HId_t
h5t_INTEL_B32 :: HId_t
h5t_INTEL_B64 :: HId_t
h5t_INTEL_F32 :: HId_t
h5t_INTEL_F64 :: HId_t
h5t_ALPHA_I8 :: HId_t
h5t_ALPHA_I16 :: HId_t
h5t_ALPHA_I32 :: HId_t
h5t_ALPHA_I64 :: HId_t
h5t_ALPHA_U8 :: HId_t
h5t_ALPHA_U16 :: HId_t
h5t_ALPHA_U32 :: HId_t
h5t_ALPHA_U64 :: HId_t
h5t_ALPHA_B8 :: HId_t
h5t_ALPHA_B16 :: HId_t
h5t_ALPHA_B32 :: HId_t
h5t_ALPHA_B64 :: HId_t
h5t_ALPHA_F32 :: HId_t
h5t_ALPHA_F64 :: HId_t
h5t_MIPS_I8 :: HId_t
h5t_MIPS_I16 :: HId_t
h5t_MIPS_I32 :: HId_t
h5t_MIPS_I64 :: HId_t
h5t_MIPS_U8 :: HId_t
h5t_MIPS_U16 :: HId_t
h5t_MIPS_U32 :: HId_t
h5t_MIPS_U64 :: HId_t
h5t_MIPS_B8 :: HId_t
h5t_MIPS_B16 :: HId_t
h5t_MIPS_B32 :: HId_t
h5t_MIPS_B64 :: HId_t
h5t_MIPS_F32 :: HId_t
h5t_MIPS_F64 :: HId_t
h5t_VAX_F32 :: HId_t
h5t_VAX_F64 :: HId_t
h5t_NATIVE_CHAR :: HId_t
h5t_NATIVE_SCHAR :: HId_t
h5t_NATIVE_UCHAR :: HId_t
h5t_NATIVE_SHORT :: HId_t
h5t_NATIVE_USHORT :: HId_t
h5t_NATIVE_INT :: HId_t
h5t_NATIVE_UINT :: HId_t
h5t_NATIVE_LONG :: HId_t
h5t_NATIVE_ULONG :: HId_t
h5t_NATIVE_LLONG :: HId_t
h5t_NATIVE_ULLONG :: HId_t
h5t_NATIVE_FLOAT :: HId_t
h5t_NATIVE_DOUBLE :: HId_t
h5t_NATIVE_LDOUBLE :: HId_t
h5t_NATIVE_B8 :: HId_t
h5t_NATIVE_B16 :: HId_t
h5t_NATIVE_B32 :: HId_t
h5t_NATIVE_B64 :: HId_t
h5t_NATIVE_OPAQUE :: HId_t
h5t_NATIVE_HADDR :: HId_t
h5t_NATIVE_HSIZE :: HId_t
h5t_NATIVE_HSSIZE :: HId_t
h5t_NATIVE_HERR :: HId_t
h5t_NATIVE_HBOOL :: HId_t
h5t_NATIVE_INT8 :: HId_t
h5t_NATIVE_UINT8 :: HId_t
h5t_NATIVE_INT_LEAST8 :: HId_t
h5t_NATIVE_UINT_LEAST8 :: HId_t
h5t_NATIVE_INT_FAST8 :: HId_t
h5t_NATIVE_UINT_FAST8 :: HId_t
h5t_NATIVE_INT16 :: HId_t
h5t_NATIVE_UINT16 :: HId_t
h5t_NATIVE_INT_LEAST16 :: HId_t
h5t_NATIVE_UINT_LEAST16 :: HId_t
h5t_NATIVE_INT_FAST16 :: HId_t
h5t_NATIVE_UINT_FAST16 :: HId_t
h5t_NATIVE_INT32 :: HId_t
h5t_NATIVE_UINT32 :: HId_t
h5t_NATIVE_INT_LEAST32 :: HId_t
h5t_NATIVE_UINT_LEAST32 :: HId_t
h5t_NATIVE_INT_FAST32 :: HId_t
h5t_NATIVE_UINT_FAST32 :: HId_t
h5t_NATIVE_INT64 :: HId_t
h5t_NATIVE_UINT64 :: HId_t
h5t_NATIVE_INT_LEAST64 :: HId_t
h5t_NATIVE_UINT_LEAST64 :: HId_t
h5t_NATIVE_INT_FAST64 :: HId_t
h5t_NATIVE_UINT_FAST64 :: HId_t

-- | Create a new type and initialize it to reasonable values. The type is
--   a member of type class 'type' and is <tt>size</tt> bytes.
--   
--   On success, returns a new type identifier. On failure, returns a
--   negative value.
--   
--   <pre>
--   hid_t H5Tcreate(H5T_class_t type, size_t size);
--   </pre>
h5t_create :: H5T_class_t -> CSize -> IO HId_t
p_H5Tcreate :: FunPtr (H5T_class_t -> CSize -> IO HId_t)

-- | Copies a datatype. The resulting datatype is not locked. The datatype
--   should be closed when no longer needed by calling <a>h5t_close</a>.
--   
--   Returns the ID of a new datatype on success, negative on failure.
--   
--   <pre>
--   hid_t H5Tcopy(hid_t type_id);
--   </pre>
h5t_copy :: HId_t -> IO HId_t
p_H5Tcopy :: FunPtr (HId_t -> IO HId_t)

-- | Frees a datatype and all associated memory.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tclose(hid_t type_id);
--   </pre>
h5t_close :: HId_t -> IO HErr_t
p_H5Tclose :: FunPtr (HId_t -> IO HErr_t)

-- | Determines if two datatypes are equal.
--   
--   <pre>
--   htri_t H5Tequal(hid_t type1_id, hid_t type2_id);
--   </pre>
h5t_equal :: HId_t -> HId_t -> IO HTri_t
p_H5Tequal :: FunPtr (HId_t -> HId_t -> IO HTri_t)

-- | Locks a type, making it read only and non-destructable. This is
--   normally done by the library for predefined datatypes so the
--   application doesn't inadvertently change or delete a predefined type.
--   
--   Once a datatype is locked it can never be unlocked unless the entire
--   library is closed.
--   
--   It is illegal to lock a named datatype since we must allow named types
--   to be closed (to release file resources) but locking a type prevents
--   that.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tlock(hid_t type_id);
--   </pre>
h5t_lock :: HId_t -> IO HErr_t
p_H5Tlock :: FunPtr (HId_t -> IO HErr_t)

-- | Save a transient datatype to a file and turn the type handle into a
--   "named", immutable type.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tcommit2(hid_t loc_id, const char *name, hid_t type_id,
--       hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id);
--   </pre>
h5t_commit2 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> IO HErr_t
p_H5Tcommit2 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> IO HErr_t)

-- | Opens a named datatype using a Datatype Access Property List.
--   
--   Returns the object ID of the named datatype on success, negative on
--   failure.
--   
--   <pre>
--   hid_t H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id);
--   </pre>
h5t_open2 :: HId_t -> CString -> HId_t -> IO HId_t
p_H5Topen2 :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

-- | Save a transient datatype to a file and turn the type handle into a
--   "named", immutable type.
--   
--   The resulting ID should be linked into the file with <tt>h5o_link</tt>
--   or it will be deleted when closed.
--   
--   Note: Datatype access property list is unused currently, but is
--   checked for sanity anyway.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id);
--   </pre>
h5t_commit_anon :: HId_t -> HId_t -> HId_t -> HId_t -> IO HErr_t
p_H5Tcommit_anon :: FunPtr (HId_t -> HId_t -> HId_t -> HId_t -> IO HErr_t)

-- | Returns a copy of the datatype creation property list, or negative on
--   failure. The property list ID should be released by calling
--   <tt>h5p_close</tt>.
--   
--   <pre>
--   hid_t H5Tget_create_plist(hid_t type_id);
--   </pre>
h5t_get_create_plist :: HId_t -> IO HId_t
p_H5Tget_create_plist :: FunPtr (HId_t -> IO HId_t)

-- | Determines if a datatype is committed or not.
--   
--   <pre>
--   htri_t H5Tcommitted(hid_t type_id);
--   </pre>
h5t_committed :: HId_t -> IO HTri_t
p_H5Tcommitted :: FunPtr (HId_t -> IO HTri_t)

-- | Given a datatype ID, converts the object description into binary in a
--   buffer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tencode(hid_t obj_id, void *buf, size_t *nalloc);
--   </pre>
h5t_encode :: HId_t -> OutArray a -> InOut CSize -> IO HErr_t
p_H5Tencode :: FunPtr (HId_t -> OutArray a -> InOut CSize -> IO HErr_t)

-- | Decode a binary object description and return a new object handle, or
--   negative on failure.
--   
--   <pre>
--   hid_t H5Tdecode(const void *buf);
--   </pre>
h5t_decode :: InArray a -> IO HId_t
p_H5Tdecode :: FunPtr (InArray a -> IO HId_t)
h5t_flush :: HId_t -> IO HErr_t
p_H5Tflush :: FunPtr (HId_t -> IO HErr_t)
h5t_refresh :: HId_t -> IO HErr_t
p_H5Trefresh :: FunPtr (HId_t -> IO HErr_t)

-- | Adds another member to the compound datatype <tt>parent_id</tt>. The
--   new member has a <tt>name</tt> which must be unique within the
--   compound datatype. The <tt>offset</tt> argument defines the start of
--   the member in an instance of the compound datatype, and
--   <tt>member_id</tt> is the type of the new member.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset,
--          hid_t member_id);
--   </pre>
h5t_insert :: HId_t -> CString -> CSize -> HId_t -> IO HErr_t
p_H5Tinsert :: FunPtr (HId_t -> CString -> CSize -> HId_t -> IO HErr_t)

-- | Recursively removes padding from within a compound datatype to make it
--   more efficient (space-wise) to store that data.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tpack(hid_t type_id);
--   </pre>
h5t_pack :: HId_t -> IO HErr_t
p_H5Tpack :: FunPtr (HId_t -> IO HErr_t)

-- | Create a new enumeration data type based on the specified 'type',
--   which must be an integer type.
--   
--   Returns the ID of a new enumeration data type on success, negative on
--   failure.
--   
--   <pre>
--   hid_t H5Tenum_create(hid_t base_id);
--   </pre>
h5t_enum_create :: HId_t -> IO HId_t
p_H5Tenum_create :: FunPtr (HId_t -> IO HId_t)

-- | Insert a new enumeration data type member into an enumeration type.
--   'type' is the enumeration type, <tt>name</tt> is the name of the new
--   member, and <tt>value</tt> points to the value of the new member. The
--   <tt>name</tt> and <tt>value</tt> must both be unique within the
--   'type'. <tt>value</tt> points to data which is of the data type
--   defined when the enumeration type was created.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tenum_insert(hid_t type, const char *name, const void *value);
--   </pre>
h5t_enum_insert :: HId_t -> CString -> In a -> IO HErr_t
p_H5Tenum_insert :: FunPtr (HId_t -> CString -> In a -> IO HErr_t)

-- | Finds the symbol name that corresponds to the specified <tt>value</tt>
--   of an enumeration data type 'type'. At most <tt>size</tt> characters
--   of the symbol name are copied into the <tt>name</tt> buffer. If the
--   entire symbol anem and null terminator do not fit in the <tt>name</tt>
--   buffer then as many characters as possible are copied (not null
--   terminated) and the function fails.
--   
--   Returns non-negative on success, negative on failure. On failure, the
--   first character of <tt>name</tt> is set to null if <tt>size</tt>
--   allows it.
--   
--   WARNING: the above 2 paragraphs contradict each other about what
--   happens on failure. This is because the documentation in the source
--   does. If I read the source correctly, this is because there are some
--   failures which have one behavior and some which have the other.
--   Therefore, I would probably not rely on either behavior.
--   
--   <pre>
--   herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/,
--          size_t size);
--   </pre>
h5t_enum_nameof :: HId_t -> In a -> OutArray CChar -> CSize -> IO HErr_t
p_H5Tenum_nameof :: FunPtr (HId_t -> In a -> OutArray CChar -> CSize -> IO HErr_t)

-- | Finds the value that corresponds to the specified <tt>name</tt> of an
--   enumeration 'type'. The <tt>value</tt> argument should be at least as
--   large as the value of <tt><a>h5t_get_size</a> type</tt> in order to
--   hold the result.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tenum_valueof(hid_t type, const char *name,
--          void *value/*out*/);
--   </pre>
h5t_enum_valueof :: HId_t -> CString -> Out a -> IO HErr_t
p_H5Tenum_valueof :: FunPtr (HId_t -> CString -> Out a -> IO HErr_t)

-- | Create a new variable-length datatype based on the specified
--   <tt>base_type</tt>.
--   
--   Returns the ID of a new VL datatype on success, negative on failure.
--   
--   <pre>
--   hid_t H5Tvlen_create(hid_t base_id);
--   </pre>
h5t_vlen_create :: HId_t -> IO HId_t
p_H5Tvlen_create :: FunPtr (HId_t -> IO HId_t)

-- | Create a new array datatype based on the specified <tt>base_type</tt>.
--   The type is an array with <tt>ndims</tt> dimensionality and the size
--   of the array is <tt>dims</tt>. The total member size should be
--   relatively small. Array datatypes are currently limited to
--   <tt>h5s_max_rank</tt> number of dimensions and must have the number of
--   dimensions set greater than 0. (i.e. 0 &gt; <tt>ndims</tt> &lt;=
--   <tt>h5s_MAX_RANK</tt>) All dimensions sizes must be greater than 0
--   also.
--   
--   Returns the ID of a new array datatype on success, negative on
--   failure.
--   
--   <pre>
--   hid_t H5Tarray_create2(hid_t base_id, unsigned ndims,
--          const hsize_t dim[/* ndims */]);
--   </pre>
h5t_array_create2 :: HId_t -> CUInt -> InArray HSize_t -> IO HId_t
p_H5Tarray_create2 :: FunPtr (HId_t -> CUInt -> InArray HSize_t -> IO HId_t)

-- | Returns the number of dimensions of an array datatype, or negative on
--   failure.
--   
--   <pre>
--   int H5Tget_array_ndims(hid_t type_id);
--   </pre>
h5t_get_array_ndims :: HId_t -> IO CInt
p_H5Tget_array_ndims :: FunPtr (HId_t -> IO CInt)

-- | Query the sizes of dimensions for an array datatype.
--   
--   Returns the number of dimensions of the array type on success or
--   negative on failure.
--   
--   <pre>
--   int H5Tget_array_dims2(hid_t type_id, hsize_t dims[]);
--   </pre>
h5t_get_array_dims2 :: HId_t -> OutArray HSize_t -> IO CInt
p_H5Tget_array_dims2 :: FunPtr (HId_t -> OutArray HSize_t -> IO CInt)

-- | Tag an opaque datatype with a unique ASCII identifier.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_tag(hid_t type, const char *tag);
--   </pre>
h5t_set_tag :: HId_t -> CString -> IO HErr_t
p_H5Tset_tag :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Get the tag associated with an opaque datatype.
--   
--   Returns a pointer to a <tt>malloc</tt>ed string. The caller should
--   <tt>free</tt> the string.
--   
--   <pre>
--   char *H5Tget_tag(hid_t type);
--   </pre>
h5t_get_tag :: HId_t -> IO CString
p_H5Tget_tag :: FunPtr (HId_t -> IO CString)

-- | Returns the type from which 'type' is derived. In the case of an
--   enumeration type the return value is an integer type.
--   
--   Returns the type ID for the base datatype on success, or negative on
--   failure.
--   
--   <pre>
--   hid_t H5Tget_super(hid_t type);
--   </pre>
h5t_get_super :: HId_t -> IO HId_t
p_H5Tget_super :: FunPtr (HId_t -> IO HId_t)

-- | Returns the datatype class identifier for datatype <tt>type_id</tt>.
--   
--   Returns one of the non-negative datatype class constants on success or
--   <a>h5t_NO_CLASS</a> (which is negative) on failure.
--   
--   <pre>
--   H5T_class_t H5Tget_class(hid_t type_id);
--   </pre>
h5t_get_class :: HId_t -> IO H5T_class_t
p_H5Tget_class :: FunPtr (HId_t -> IO H5T_class_t)

-- | Check whether a datatype contains (or is) a certain type of datatype.
--   
--   <pre>
--   htri_t H5Tdetect_class(hid_t type_id, H5T_class_t cls);
--   </pre>
h5t_detect_class :: HId_t -> H5T_class_t -> IO HTri_t
p_H5Tdetect_class :: FunPtr (HId_t -> H5T_class_t -> IO HTri_t)

-- | Determines the total size of a datatype in bytes.
--   
--   Returns the size of an instance of the datatype (in bytes) on success
--   or 0 on failure (valid datatypes are never zero size).
--   
--   <pre>
--   size_t H5Tget_size(hid_t type_id);
--   </pre>
h5t_get_size :: HId_t -> IO CSize
p_H5Tget_size :: FunPtr (HId_t -> IO CSize)

-- | Returns the byte order of a datatype on success, or
--   <a>h5t_ORDER_ERROR</a> (which is negative) on failure.
--   
--   If the type is compound and its members have mixed orders, this
--   function returns <a>h5t_ORDER_MIXED</a>.
--   
--   <pre>
--   H5T_order_t H5Tget_order(hid_t type_id);
--   </pre>
h5t_get_order :: HId_t -> IO H5T_order_t
p_H5Tget_order :: FunPtr (HId_t -> IO H5T_order_t)

-- | Gets the precision of a datatype. The precision is the number of
--   significant bits which, unless padding is present, is 8 times larger
--   than the value returned by <a>h5t_get_size</a>.
--   
--   Returns 0 on failure (all atomic types have at least one significant
--   bit)
--   
--   <pre>
--   size_t H5Tget_precision(hid_t type_id);
--   </pre>
h5t_get_precision :: HId_t -> IO CSize
p_H5Tget_precision :: FunPtr (HId_t -> IO CSize)

-- | Retrieves the bit offset of the first significant bit. The signficant
--   bits of an atomic datum can be offset from the beginning of the memory
--   for that datum by an amount of padding. The <tt>offset</tt> property
--   specifies the number of bits of padding that appear to the "right of"
--   the value. That is, if we have a 32-bit datum with 16-bits of
--   precision having the value 0x1122 then it will be layed out in memory
--   as (from small byte address toward larger byte addresses):
--   
--   <pre>
--       Big      Big       Little   Little
--       Endian   Endian    Endian   Endian
--       offset=0 offset=16 offset=0 offset=16
--   
--   0:  [ pad]   [0x11]    [0x22]   [ pad]
--   1:  [ pad]   [0x22]    [0x11]   [ pad]
--   2:  [0x11]   [ pad]    [ pad]   [0x22]
--   3:  [0x22]   [ pad]    [ pad]   [0x11]
--   </pre>
--   
--   Returns the offset on success or negative on failure.
--   
--   <pre>
--   int H5Tget_offset(hid_t type_id);
--   </pre>
h5t_get_offset :: HId_t -> IO CInt
p_H5Tget_offset :: FunPtr (HId_t -> IO CInt)

-- | Gets the least significant pad type and the most significant pad type
--   and returns their values through the LSB and MSB arguments, either of
--   which may be the null pointer.
--   
--   Returns non-negative on success or negative on failure.
--   
--   <pre>
--   herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/,
--          H5T_pad_t *msb/*out*/);
--   </pre>
h5t_get_pad :: HId_t -> Out H5T_pad_t -> Out H5T_pad_t -> IO HErr_t
p_H5Tget_pad :: FunPtr (HId_t -> Out H5T_pad_t -> Out H5T_pad_t -> IO HErr_t)

-- | Returns the sign type for an integer type or <a>h5t_SGN_ERROR</a> (a
--   negative value) on failure.
--   
--   <pre>
--   H5T_sign_t H5Tget_sign(hid_t type_id);
--   </pre>
h5t_get_sign :: HId_t -> IO H5T_sign_t
p_H5Tget_sign :: FunPtr (HId_t -> IO H5T_sign_t)

-- | Returns information about the locations of the various bit fields of a
--   floating point datatype. The field positions are bit positions in the
--   significant region of the datatype. Bits are numbered with the least
--   significant bit number zero.
--   
--   Any (or even all) of the arguments can be null pointers.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tget_fields(hid_t type_id, size_t *spos/*out*/,
--          size_t *epos/*out*/, size_t *esize/*out*/,
--          size_t *mpos/*out*/, size_t *msize/*out*/);
--   </pre>
h5t_get_fields :: HId_t -> Out CSize -> Out CSize -> Out CSize -> Out CSize -> Out CSize -> IO HErr_t
p_H5Tget_fields :: FunPtr (HId_t -> Out CSize -> Out CSize -> Out CSize -> Out CSize -> Out CSize -> IO HErr_t)

-- | Returns the exponent bias of a floating-point type, or 0 on failure.
--   
--   <pre>
--   size_t H5Tget_ebias(hid_t type_id);
--   </pre>
h5t_get_ebias :: HId_t -> IO CSize
p_H5Tget_ebias :: FunPtr (HId_t -> IO CSize)

-- | Returns the mantisssa normalization of a floating-point data type, or
--   <a>h5t_NORM_ERROR</a> (a negative value) on failure.
--   
--   <pre>
--   H5T_norm_t H5Tget_norm(hid_t type_id);
--   </pre>
h5t_get_norm :: HId_t -> IO H5T_norm_t
p_H5Tget_norm :: FunPtr (HId_t -> IO H5T_norm_t)

-- | If any internal bits of a floating point type are unused (that is,
--   those significant bits which are not part of the sign, exponent, or
--   mantissa) then they will be filled according to the value of this
--   property.
--   
--   <pre>
--   H5T_pad_t H5Tget_inpad(hid_t type_id);
--   </pre>
h5t_get_inpad :: HId_t -> IO H5T_pad_t
p_H5Tget_inpad :: FunPtr (HId_t -> IO H5T_pad_t)

-- | The method used to store character strings differs with the
--   programming language: C usually null terminates strings while Fortran
--   left-justifies and space-pads strings. This property defines the
--   storage mechanism for the string.
--   
--   Returns the character set of a string type on success, or
--   <a>h5t_STR_ERROR</a> (a negative value) on failure.
--   
--   <pre>
--   H5T_str_t H5Tget_strpad(hid_t type_id);
--   </pre>
h5t_get_strpad :: HId_t -> IO H5T_str_t
p_H5Tget_strpad :: FunPtr (HId_t -> IO H5T_str_t)

-- | Determines how many members <tt>type_id</tt> has. The type must be
--   either a compound datatype or an enumeration datatype.
--   
--   Returns the number of members defined in the datatype on success, or
--   negative on failure.
--   
--   <pre>
--   int H5Tget_nmembers(hid_t type_id);
--   </pre>
h5t_get_nmembers :: HId_t -> IO CInt
p_H5Tget_nmembers :: FunPtr (HId_t -> IO CInt)

-- | Returns the name of a member of a compound or enumeration datatype.
--   Members are stored in no particular order with numbers 0 through N-1
--   where N is the value returned by <a>h5t_get_nmembers</a>.
--   
--   Returns a pointer to a string allocated with <tt>malloc</tt>, or NULL
--   on failure. The caller is responsible for <tt>free</tt>ing the string.
--   
--   <pre>
--   char *H5Tget_member_name(hid_t type_id, unsigned membno);
--   </pre>
h5t_get_member_name :: HId_t -> CUInt -> IO CString
p_H5Tget_member_name :: FunPtr (HId_t -> CUInt -> IO CString)

-- | Returns the index of a member in a compound or enumeration datatype by
--   given name. Members are stored in no particular order with numbers 0
--   through N-1 where N is the value returned by <a>h5t_get_nmembers</a>.
--   
--   Returns the index of the member on success, or negative on failure.
--   
--   <pre>
--   int H5Tget_member_index(hid_t type_id, const char *name);
--   </pre>
h5t_get_member_index :: HId_t -> CString -> IO CInt
p_H5Tget_member_index :: FunPtr (HId_t -> CString -> IO CInt)

-- | Returns the byte offset of the beginning of a member with respect to
--   the beginning of the compound datatype datum.
--   
--   Returns the byte offset on success, or zero on failure. Zero is a
--   valid offset, but this function will fail only if a call to
--   <tt>h5t_get_member_dims</tt> fails with the same arguments.
--   
--   <pre>
--   size_t H5Tget_member_offset(hid_t type_id, unsigned membno);
--   </pre>
h5t_get_member_offset :: HId_t -> CUInt -> IO CSize
p_H5Tget_member_offset :: FunPtr (HId_t -> CUInt -> IO CSize)

-- | Returns the datatype class of a member of a compound datatype.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   H5T_class_t H5Tget_member_class(hid_t type_id, unsigned membno);
--   </pre>
h5t_get_member_class :: HId_t -> CUInt -> IO H5T_class_t
p_H5Tget_member_class :: FunPtr (HId_t -> CUInt -> IO H5T_class_t)

-- | Returns a copy of the datatype of the specified member, or negative on
--   failure. The caller should invoke <a>h5t_close</a> to release
--   resources associated with the type.
--   
--   <pre>
--   hid_t H5Tget_member_type(hid_t type_id, unsigned membno);
--   </pre>
h5t_get_member_type :: HId_t -> CUInt -> IO HId_t
p_H5Tget_member_type :: FunPtr (HId_t -> CUInt -> IO HId_t)

-- | Return the value for an enumeration data type member.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tget_member_value(hid_t type_id, unsigned membno, void *value/*out*/);
--   </pre>
h5t_get_member_value :: HId_t -> CUInt -> Out a -> IO HErr_t
p_H5Tget_member_value :: FunPtr (HId_t -> CUInt -> Out a -> IO HErr_t)

-- | HDF5 is able to distinguish between character sets of different
--   nationalities and to convert between them to the extent possible.
--   
--   Returns the character set of a string type on success, or
--   <a>h5t_CSET_ERROR</a> (a negative value) on failure.
--   
--   <pre>
--   H5T_cset_t H5Tget_cset(hid_t type_id);
--   </pre>
h5t_get_cset :: HId_t -> IO H5T_cset_t
p_H5Tget_cset :: FunPtr (HId_t -> IO H5T_cset_t)

-- | Check whether a datatype is a variable-length string
--   
--   <pre>
--   htri_t H5Tis_variable_str(hid_t type_id);
--   </pre>
h5t_is_variable_str :: HId_t -> IO HTri_t
p_H5Tis_variable_str :: FunPtr (HId_t -> IO HTri_t)

-- | High-level API to return the native type of a datatype. The native
--   type is chosen by matching the size and class of querried datatype
--   from the following native premitive datatypes:
--   
--   <a>h5t_NATIVE_CHAR</a> <a>h5t_NATIVE_UCHAR</a> <a>h5t_NATIVE_SHORT</a>
--   <a>h5t_NATIVE_USHORT</a> <a>h5t_NATIVE_INT</a> <a>h5t_NATIVE_UINT</a>
--   <a>h5t_NATIVE_LONG</a> <a>h5t_NATIVE_ULONG</a> <a>h5t_NATIVE_LLONG</a>
--   <a>h5t_NATIVE_ULLONG</a>
--   
--   <tt>H5T_NATIVE_FLOAT</tt> <tt>H5T_NATIVE_DOUBLE</tt>
--   <tt>H5T_NATIVE_LDOUBLE</tt>
--   
--   Compound, array, enum, and VL types all choose among these types for
--   theire members. Time, Bifield, Opaque, Reference types are only copy
--   out.
--   
--   Returns the native data type if successful, negative otherwise.
--   
--   <pre>
--   hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction);
--   </pre>
h5t_get_native_type :: HId_t -> H5T_direction_t -> IO HId_t
p_H5Tget_native_type :: FunPtr (HId_t -> H5T_direction_t -> IO HId_t)

-- | Sets the total size in bytes for a datatype (this operation is not
--   permitted on reference datatypes). If the size is decreased so that
--   the significant bits of the datatype extend beyond the edge of the new
--   size, then the <tt>offset</tt> property is decreased toward zero. If
--   the <tt>offset</tt> becomes zero and the significant bits of the
--   datatype still hang over the edge of the new size, then the number of
--   significant bits is decreased.
--   
--   Adjusting the size of an <a>h5t_STRING</a> automatically sets the
--   precision to <tt>8*size</tt>.
--   
--   All datatypes have a positive size.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_size(hid_t type_id, size_t size);
--   </pre>
h5t_set_size :: HId_t -> CSize -> IO HErr_t
p_H5Tset_size :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Sets the byte order for a datatype.
--   
--   Notes: There are some restrictions on this operation:
--   
--   <ol>
--   <li>For enum type, members shouldn't be defined yet.</li>
--   <li><a>h5t_ORDER_NONE</a> only works for reference and fixed-length
--   string.</li>
--   <li>For opaque type, the order will be ignored.</li>
--   <li>For compound type, all restrictions above apply to the
--   members.</li>
--   </ol>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_order(hid_t type_id, H5T_order_t order);
--   </pre>
h5t_set_order :: HId_t -> H5T_order_t -> IO HErr_t
p_H5Tset_order :: FunPtr (HId_t -> H5T_order_t -> IO HErr_t)

-- | Sets the precision of a datatype. The precision is the number of
--   significant bits which, unless padding is present, is 8 times larger
--   than the value returned by <a>h5t_get_size</a>.
--   
--   If the precision is increased then the offset is decreased and then
--   the size is increased to insure that significant bits do not "hang
--   over" the edge of the datatype.
--   
--   The precision property of strings is read-only.
--   
--   When decreasing the precision of a floating point type, set the
--   locations and sizes of the sign, mantissa, and exponent fields first.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_precision(hid_t type_id, size_t prec);
--   </pre>
h5t_set_precision :: HId_t -> CSize -> IO HErr_t
p_H5Tset_precision :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Sets the bit offset of the first significant bit. The signficant bits
--   of an atomic datum can be offset from the beginning of the memory for
--   that datum by an amount of padding. The <tt>offset</tt> property
--   specifies the number of bits of padding that appear to the "right of"
--   the value. That is, if we have a 32-bit datum with 16-bits of
--   precision having the value 0x1122 then it will be layed out in memory
--   as (from small byte address toward larger byte addresses):
--   
--   <pre>
--       Big      Big       Little   Little
--       Endian   Endian    Endian   Endian
--       offset=0 offset=16 offset=0 offset=16
--   
--   0:  [ pad]   [0x11]    [0x22]   [ pad]
--   1:  [ pad]   [0x22]    [0x11]   [ pad]
--   2:  [0x11]   [ pad]    [ pad]   [0x22]
--   3:  [0x22]   [ pad]    [ pad]   [0x11]
--   </pre>
--   
--   If the offset is incremented then the total size is incremented also
--   if necessary to prevent significant bits of the value from hanging
--   over the edge of the data type.
--   
--   The offset of an <a>h5t_STRING</a> cannot be set to anything but zero.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_offset(hid_t type_id, size_t offset);
--   </pre>
h5t_set_offset :: HId_t -> CSize -> IO HErr_t
p_H5Tset_offset :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Sets the LSB and MSB pad types.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb);
--   </pre>
h5t_set_pad :: HId_t -> H5T_pad_t -> H5T_pad_t -> IO HErr_t
p_H5Tset_pad :: FunPtr (HId_t -> H5T_pad_t -> H5T_pad_t -> IO HErr_t)

-- | Sets the sign property for an integer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign);
--   </pre>
h5t_set_sign :: HId_t -> H5T_sign_t -> IO HErr_t
p_H5Tset_sign :: FunPtr (HId_t -> H5T_sign_t -> IO HErr_t)

-- | Sets the locations and sizes of the various floating point bit fields.
--   The field positions are bit positions in the significant region of the
--   datatype. Bits are numbered with the least significant bit number
--   zero.
--   
--   Fields are not allowed to extend beyond the number of bits of
--   precision, nor are they allowed to overlap with one another.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos,
--          size_t esize, size_t mpos, size_t msize);
--   </pre>
h5t_set_fields :: HId_t -> CSize -> CSize -> CSize -> CSize -> CSize -> IO HErr_t
p_H5Tset_fields :: FunPtr (HId_t -> CSize -> CSize -> CSize -> CSize -> CSize -> IO HErr_t)

-- | Sets the exponent bias of a floating-point type.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_ebias(hid_t type_id, size_t ebias);
--   </pre>
h5t_set_ebias :: HId_t -> CSize -> IO HErr_t
p_H5Tset_ebias :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Sets the mantissa normalization method for a floating point datatype.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm);
--   </pre>
h5t_set_norm :: HId_t -> H5T_norm_t -> IO HErr_t
p_H5Tset_norm :: FunPtr (HId_t -> H5T_norm_t -> IO HErr_t)

-- | If any internal bits of a floating point type are unused (that is,
--   those significant bits which are not part of the sign, exponent, or
--   mantissa) then they will be filled according to the value of this
--   property.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad);
--   </pre>
h5t_set_inpad :: HId_t -> H5T_pad_t -> IO HErr_t
p_H5Tset_inpad :: FunPtr (HId_t -> H5T_pad_t -> IO HErr_t)

-- | HDF5 is able to distinguish between character sets of different
--   nationalities and to convert between them to the extent possible.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset);
--   </pre>
h5t_set_cset :: HId_t -> H5T_cset_t -> IO HErr_t
p_H5Tset_cset :: FunPtr (HId_t -> H5T_cset_t -> IO HErr_t)

-- | The method used to store character strings differs with the
--   programming language: C usually null terminates strings while Fortran
--   left-justifies and space-pads strings. This property defines the
--   storage mechanism for the string.
--   
--   When converting from a long string to a short string if the short
--   string is <a>h5t_STR_NULLPAD</a> or <a>h5t_STR_SPACEPAD</a> then the
--   string is simply truncated; otherwise if the short string is
--   <a>h5t_STR_NULLTERM</a> it will be truncated and a null terminator is
--   appended.
--   
--   When converting from a short string to a long string, the long string
--   is padded on the end by appending nulls or spaces.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad);
--   </pre>
h5t_set_strpad :: HId_t -> H5T_str_t -> IO HErr_t
p_H5Tset_strpad :: FunPtr (HId_t -> H5T_str_t -> IO HErr_t)

-- | Register a hard or soft conversion function for a data type conversion
--   path. The path is specified by the source and destination data types
--   <tt>src_id</tt> and <tt>dst_id</tt> (for soft functions only the class
--   of these types is important). If <tt>func</tt> is a hard function then
--   it replaces any previous path; if it's a soft function then it
--   replaces all existing paths to which it applies and is used for any
--   new path to which it applies as long as that path doesn't have a hard
--   function.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id,
--          hid_t dst_id, H5T_conv_t func);
--   </pre>
h5t_register :: H5T_pers_t -> CString -> HId_t -> HId_t -> H5T_conv_t a b c -> IO HErr_t
p_H5Tregister :: FunPtr (H5T_pers_t -> CString -> HId_t -> HId_t -> H5T_conv_t a b c -> IO HErr_t)

-- | Removes conversion paths that match the specified criteria. All
--   arguments are optional. Missing arguments are wild cards. The special
--   no-op path cannot be removed.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id,
--          hid_t dst_id, H5T_conv_t func);
--   </pre>
h5t_unregister :: H5T_pers_t -> CString -> HId_t -> HId_t -> H5T_conv_t a b c -> IO HErr_t
p_H5Tunregister :: FunPtr (H5T_pers_t -> CString -> HId_t -> HId_t -> H5T_conv_t a b c -> IO HErr_t)

-- | Finds a conversion function that can handle a conversion from type
--   <tt>src_id</tt> to type <tt>dst_id</tt>. The <tt>pcdata</tt> argument
--   is a pointer to a pointer to type conversion data which was created
--   and initialized by the type conversion function of this path when the
--   conversion function was installed on the path.
--   
--   <pre>
--   H5T_convT H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata);
--   </pre>
h5t_find :: HId_t -> HId_t -> Out (Ptr (H5T_cdata_t c)) -> IO (H5T_conv_t a b c)
p_H5Tfind :: FunPtr (HId_t -> HId_t -> Out (Ptr (H5T_cdata_t c)) -> IO (H5T_conv_t a b c))

-- | Finds out whether the library's conversion function from type
--   <tt>src_id</tt> to type <tt>dst_id</tt> is a compiler (hard)
--   conversion. A hard conversion uses compiler's casting; a soft
--   conversion uses the library's own conversion function.
--   
--   <pre>
--   htri_t H5Tcompiler_conv(hid_t src_id, hid_t dst_id);
--   </pre>
h5t_compiler_conv :: HId_t -> HId_t -> IO HTri_t
p_H5Tcompiler_conv :: FunPtr (HId_t -> HId_t -> IO HTri_t)

-- | Convert <tt>nelmts</tt> elements from type <tt>src_id</tt> to type
--   <tt>dst_id</tt>. The source elements are packed in <tt>buf</tt> and on
--   return the destination will be packed in <tt>buf</tt>. That is, the
--   conversion is performed in place. The optional background buffer is an
--   array of <tt>nelmts</tt> values of destination type which are merged
--   with the converted values to fill in cracks (for instance,
--   <tt>background</tt> might be an array of structs with the <tt>a</tt>
--   and <tt>b</tt> fields already initialized and the conversion of BUF
--   supplies the <tt>c</tt> and <tt>d</tt> field values). The
--   <tt>plist_id</tt> a dataset transfer property list which is passed to
--   the conversion functions. (It's currently only used to pass along the
--   VL datatype custom allocation information -QAK 7<i>1</i>99)
--   
--   <pre>
--   herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts,
--          void *buf, void *background, hid_t plist_id);
--   </pre>
h5t_convert :: HId_t -> HId_t -> CSize -> InOutArray a -> InArray b -> HId_t -> IO HErr_t
p_H5Tconvert :: FunPtr (HId_t -> HId_t -> CSize -> InOutArray a -> InArray b -> HId_t -> IO HErr_t)

-- | Save a transient datatype to a file and turn the type handle into a
--   named, immutable type.
--   
--   Note: Deprecated in favor of <a>h5t_commit2</a>
--   
--   <pre>
--   herr_t H5Tcommit1(hid_t loc_id, const char *name, hid_t type_id);
--   </pre>
h5t_commit1 :: HId_t -> CString -> HId_t -> IO HErr_t
p_H5Tcommit1 :: FunPtr (HId_t -> CString -> HId_t -> IO HErr_t)

-- | Opens a named datatype.
--   
--   Deprecated in favor of <a>h5t_open2</a>.
--   
--   <pre>
--   hid_t H5Topen1(hid_t loc_id, const char *name);
--   </pre>
h5t_open1 :: HId_t -> CString -> IO HId_t
p_H5Topen1 :: FunPtr (HId_t -> CString -> IO HId_t)

-- | Create a new array datatype based on the specified <tt>base_type</tt>.
--   The type is an array with <tt>ndims</tt> dimensionality and the size
--   of the array is <tt>dims</tt>. The total member size should be
--   relatively small. Array datatypes are currently limited to
--   <tt>h5s_MAX_RANK</tt> number of dimensions and must have the number of
--   dimensions set greater than 0. (i.e. <tt>0 &gt; ndims &lt;=
--   <tt>h5s_MAX_RANK</tt></tt>) All dimensions sizes must be greater than
--   0 also.
--   
--   Returns the ID of a new array datatype on success, negative on
--   failure.
--   
--   <pre>
--   hid_t H5Tarray_create1(hid_t base_id, int ndims,
--          const hsize_t dim[/* ndims */],
--          const int perm[/* ndims */]);
--   </pre>
h5t_array_create1 :: HId_t -> CInt -> InArray HSize_t -> InArray CInt -> IO HId_t
p_H5Tarray_create1 :: FunPtr (HId_t -> CInt -> InArray HSize_t -> InArray CInt -> IO HId_t)

-- | Query the sizes of dimensions for an array datatype.
--   
--   Returns the number of dimensions of the array type on success,
--   negative on failure.
--   
--   <pre>
--   int H5Tget_array_dims1(hid_t type_id, hsize_t dims[], int perm[]);
--   </pre>
h5t_get_array_dims1 :: HId_t -> OutArray HSize_t -> OutArray CInt -> IO CInt
p_H5Tget_array_dims1 :: FunPtr (HId_t -> OutArray HSize_t -> OutArray CInt -> IO CInt)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_bkg_t
instance GHC.Classes.Eq (Bindings.HDF5.Raw.H5T.H5T_cdata_t a)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_class_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_cmd_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_cset_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_norm_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_order_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_pad_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_sign_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.H5T_str_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5T.HVl_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5T.H5T_cset_t
instance GHC.Internal.Read.Read Bindings.HDF5.Raw.H5T.H5T_cset_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_bkg_t
instance GHC.Internal.Show.Show (Bindings.HDF5.Raw.H5T.H5T_cdata_t a)
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_class_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_cmd_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_conv_except_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_conv_ret_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_cset_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_direction_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_norm_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_order_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_pad_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_pers_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_sign_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.H5T_str_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5T.HVl_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_bkg_t
instance GHC.Internal.Foreign.Storable.Storable (Bindings.HDF5.Raw.H5T.H5T_cdata_t a)
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_class_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_cmd_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_conv_except_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_conv_ret_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_cset_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_direction_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_norm_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_order_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_pad_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_pers_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_sign_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.H5T_str_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5T.HVl_t

module Bindings.HDF5.Raw.H5S
h5s_ALL :: HId_t
h5s_UNLIMITED :: Num a => a

-- | Maximum number of dimensions
h5s_MAX_RANK :: Num a => a

-- | Different types of dataspaces
newtype H5S_class_t
H5S_class_t :: Int32 -> H5S_class_t

-- | error
h5s_NO_CLASS :: H5S_class_t

-- | scalar variable
h5s_SCALAR :: H5S_class_t

-- | simple data space
h5s_SIMPLE :: H5S_class_t

-- | null data space
h5s_NULL :: H5S_class_t

-- | Different ways of combining selections
newtype H5S_seloper_t
H5S_seloper_t :: Int32 -> H5S_seloper_t

-- | error
h5s_SELECT_NOOP :: H5S_seloper_t

-- | Select "set" operation
h5s_SELECT_SET :: H5S_seloper_t

-- | Binary "or" operation for hyperslabs (add new selection to existing
--   selection) Original region: AAAAAAAAAA New region: BBBBBBBBBB A or B:
--   CCCCCCCCCCCCCCCC
h5s_SELECT_OR :: H5S_seloper_t

-- | Binary "and" operation for hyperslabs (only leave overlapped regions
--   in selection) Original region: AAAAAAAAAA New region: BBBBBBBBBB A and
--   B: CCCC
h5s_SELECT_AND :: H5S_seloper_t

-- | Binary "xor" operation for hyperslabs (only leave non-overlapped
--   regions in selection) Original region: AAAAAAAAAA New region:
--   BBBBBBBBBB A xor B: CCCCCC CCCCCC
h5s_SELECT_XOR :: H5S_seloper_t

-- | Binary "not" operation for hyperslabs (only leave non-overlapped
--   regions in original selection) Original region: AAAAAAAAAA New region:
--   BBBBBBBBBB A not B: CCCCCC
h5s_SELECT_NOTB :: H5S_seloper_t

-- | Binary "not" operation for hyperslabs (only leave non-overlapped
--   regions in new selection) Original region: AAAAAAAAAA New region:
--   BBBBBBBBBB B not A: CCCCCC
h5s_SELECT_NOTA :: H5S_seloper_t

-- | Append elements to end of point selection
h5s_SELECT_APPEND :: H5S_seloper_t

-- | Prepend elements to beginning of point selection
h5s_SELECT_PREPEND :: H5S_seloper_t

-- | Invalid upper bound on selection operations
h5s_SELECT_INVALID :: H5S_seloper_t

-- | Enumerated type for the type of selection
newtype H5S_sel_type
H5S_sel_type :: Int32 -> H5S_sel_type

-- | Error
h5s_SEL_ERROR :: H5S_sel_type

-- | Nothing selected
h5s_SEL_NONE :: H5S_sel_type

-- | Sequence of points selected
h5s_SEL_POINTS :: H5S_sel_type

-- | "New-style" hyperslab selection defined
h5s_SEL_HYPERSLABS :: H5S_sel_type

-- | Entire extent selected
h5s_SEL_ALL :: H5S_sel_type

-- | Number of selection types
h5s_SEL_N :: Num a => a

-- | Creates a new dataspace of a given type. The extent &amp; selection
--   are undefined
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> type :: <tt>H5S_type_t</tt> </tt></i> Dataspace type to
--   create</li>
--   </ul>
--   
--   Returns valid dataspace ID on success, negative on failure
--   
--   <pre>
--   hid_t H5Screate(H5S_class_t type);
--   </pre>
h5s_create :: H5S_class_t -> IO HId_t
p_H5Screate :: FunPtr (H5S_class_t -> IO HId_t)

-- | Creates a new simple dataspace object and opens it for access. The
--   <tt>dims</tt> argument is the size of the simple dataset and the
--   <tt>maxdims</tt> argument is the upper limit on the size of the
--   dataset. <tt>maxdims</tt> may be the null pointer in which case the
--   upper limit is the same as <tt>dims</tt>. If an element of
--   <tt>maxdims</tt> is <a>h5s_UNLIMITED</a> then the corresponding
--   dimension is unlimited, otherwise no element of <tt>maxdims</tt>
--   should be smaller than the corresponding element of <tt>dims</tt>.
--   
--   On success, returns the ID for the new simple dataspace object.
--   Returns negative on failure.
--   
--   <pre>
--   hid_t H5Screate_simple(int rank, const hsize_t dims[],
--          const hsize_t maxdims[]);
--   </pre>
h5s_create_simple :: CInt -> InArray HSize_t -> InArray HSize_t -> IO HId_t
p_H5Screate_simple :: FunPtr (CInt -> InArray HSize_t -> InArray HSize_t -> IO HId_t)

-- | Determines if a simple dataspace's extent has been set (e.g., by
--   <a>h5s_set_extent_simple</a>). Helps avoid write errors.
--   
--   Returns TRUE (C macro) if dataspace has extent set, FALSE (C macro) if
--   dataspace's extent is uninitialized.
--   
--   <pre>
--   herr_t H5Sset_extent_simple(hid_t space_id, int rank,
--          const hsize_t dims[],
--          const hsize_t max[]);
--   </pre>
h5s_set_extent_simple :: HId_t -> CInt -> InArray HSize_t -> InArray HSize_t -> IO HErr_t
p_H5Sset_extent_simple :: FunPtr (HId_t -> CInt -> InArray HSize_t -> InArray HSize_t -> IO HErr_t)

-- | Copies a dataspace.
--   
--   On success, returns the ID of the new dataspace. Returns negative on
--   failure.
--   
--   <pre>
--   hid_t H5Scopy(hid_t space_id);
--   </pre>
h5s_copy :: HId_t -> IO HId_t
p_H5Scopy :: FunPtr (HId_t -> IO HId_t)

-- | Release access to a dataspace object.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sclose(hid_t space_id);
--   </pre>
h5s_close :: HId_t -> IO HErr_t
p_H5Sclose :: FunPtr (HId_t -> IO HErr_t)

-- | Decode a binary object description of dataspace and return a new
--   object handle.
--   
--   On success, returns the ID of the new dataspace. Returns negative on
--   failure.
--   
--   <pre>
--   hid_t H5Sdecode(const void *buf);
--   </pre>
h5s_decode :: InArray CChar -> IO HId_t
p_H5Sdecode :: FunPtr (InArray CChar -> IO HId_t)

-- | Determines how many data points a dataset extent has.
--   
--   On success, returns the number of data points in the dataset. On
--   failure, returns a negative value.
--   
--   <pre>
--   hssize_t H5Sget_simple_extent_npoints(hid_t space_id);
--   </pre>
h5s_get_simple_extent_npoints :: HId_t -> IO HSSize_t
p_H5Sget_simple_extent_npoints :: FunPtr (HId_t -> IO HSSize_t)

-- | Determines the dimensionality of a dataspace.
--   
--   On success, returns the number of dimensions in the dataset. On
--   failure, returns a negative value.
--   
--   <pre>
--   int H5Sget_simple_extent_ndims(hid_t space_id);
--   </pre>
h5s_get_simple_extent_ndims :: HId_t -> IO CInt
p_H5Sget_simple_extent_ndims :: FunPtr (HId_t -> IO CInt)

-- | Returns the size and maximum sizes in each dimension of a dataspace DS
--   through the DIMS and MAXDIMS arguments.
--   
--   Returns the number of dimensions, the same value as returned by
--   <a>h5s_get_simple_extent_ndims</a>, or a negative value on failure..
--   
--   <pre>
--   int H5Sget_simple_extent_dims(hid_t space_id, hsize_t dims[],
--          hsize_t maxdims[]);
--   </pre>
h5s_get_simple_extent_dims :: HId_t -> OutArray HSize_t -> OutArray HSize_t -> IO CInt
p_H5Sget_simple_extent_dims :: FunPtr (HId_t -> OutArray HSize_t -> OutArray HSize_t -> IO CInt)

-- | Check if a dataspace is simple
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> space_id :: <a>HId_t</a> </tt></i> ID of dataspace object
--   to query</li>
--   </ul>
--   
--   <pre>
--   htri_t H5Sis_simple(hid_t space_id);
--   </pre>
h5s_is_simple :: HId_t -> IO HTri_t
p_H5Sis_simple :: FunPtr (HId_t -> IO HTri_t)

-- | Returns the number of elements in current selection for dataspace.
--   
--   Parameters: [<tt> dsid :: <a>HId_t</a> </tt>] Dataspace ID of
--   selection to query
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   hssize_t H5Sget_select_npoints(hid_t spaceid);
--   </pre>
h5s_get_select_npoints :: HId_t -> IO HSSize_t
p_H5Sget_select_npoints :: FunPtr (HId_t -> IO HSSize_t)

-- | Combines a hyperslab selection with the current selection for a
--   dataspace. If the current selection is not a hyperslab, it is freed
--   and the hyperslab parameters passed in are combined with the
--   <a>h5s_SEL_ALL</a> hyperslab (ie. a selection composing the entire
--   current extent). If <tt>stride</tt> or <tt>block</tt> is NULL, they
--   are assumed to be set to all '1'.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dsid :: <a>HId_t</a> </tt></i> Dataspace ID of selection
--   to modify</li>
--   <li><i><tt> op :: <a>H5S_seloper_t</a> </tt></i> Operation to perform
--   on current selection</li>
--   <li><i><tt> start :: <a>InArray</a> <a>HSize_t</a> </tt></i> Offset of
--   start of hyperslab</li>
--   <li><i><tt> stride :: <a>InArray</a> <a>HSize_t</a> </tt></i>
--   Hyperslab stride</li>
--   <li><i><tt> count :: <a>InArray</a> <a>HSize_t</a> </tt></i> Number of
--   blocks included in hyperslab</li>
--   <li><i><tt> block :: <a>InArray</a> <a>HSize_t</a> </tt></i> Size of
--   block in hyperslab</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,
--          const hsize_t start[],
--          const hsize_t _stride[],
--          const hsize_t count[],
--          const hsize_t _block[]);
--   </pre>
h5s_select_hyperslab :: HId_t -> H5S_seloper_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> IO HErr_t
p_H5Sselect_hyperslab :: FunPtr (HId_t -> H5S_seloper_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> IO HErr_t)

-- | This function selects array elements to be included in the selection
--   for the dataspace. The <tt>coord</tt> array is a 2-D array of size
--   &lt;dataspace rank&gt; by <tt>num_elem</tt> (ie. a list of coordinates
--   in the dataspace). The order of the element coordinates in the
--   <tt>coord</tt> array specifies the order that the array elements are
--   iterated through when I/O is performed. Duplicate coordinates are not
--   checked for. The selection operator, <tt>op</tt>, determines how the
--   new selection is to be combined with the existing selection for the
--   dataspace. Currently, only <a>h5s_SELECT_SET</a> is supported, which
--   replaces the existing selection with the one defined in this call.
--   When operators other than <a>h5s_SELECT_SET</a> are used to combine a
--   new selection with an existing selection, the selection ordering is
--   reset to <tt>C</tt> array ordering.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dsid :: <a>HId_t</a> </tt></i> Dataspace ID of selection
--   to modify</li>
--   <li><i><tt> op :: <a>H5S_seloper_t</a> </tt></i> Operation to perform
--   on current selection</li>
--   <li><i><tt> num_elem :: <a>CSize</a> </tt></i> Number of elements in
--   COORD array.</li>
--   <li><i><tt> coord :: <a>InArray</a> <a>HSize_t</a> </tt></i> The
--   location of each element selected</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,
--       size_t num_elem, const hsize_t *coord);
--   </pre>
h5s_select_elements :: HId_t -> H5S_seloper_t -> CSize -> InArray HSize_t -> IO HErr_t
p_H5Sselect_elements :: FunPtr (HId_t -> H5S_seloper_t -> CSize -> InArray HSize_t -> IO HErr_t)

-- | Retrieves the type of extent for a dataspace object
--   
--   Returns the class of the dataspace object on success,
--   <tt>n5s_NO_CLASS</tt> on failure.
--   
--   <pre>
--   H5S_class_t H5Sget_simple_extent_type(hid_t space_id);
--   </pre>
h5s_get_simple_extent_type :: HId_t -> IO H5S_class_t
p_H5Sget_simple_extent_type :: FunPtr (HId_t -> IO H5S_class_t)

-- | Resets the extent of a dataspace back to "none"
--   
--   This function resets the type of a dataspace back to "none" with no
--   extent information stored for the dataspace.
--   
--   <pre>
--   herr_t H5Sset_extent_none(hid_t space_id);
--   </pre>
h5s_set_extent_none :: HId_t -> IO HErr_t
p_H5Sset_extent_none :: FunPtr (HId_t -> IO HErr_t)

-- | <pre>
--   herr_t H5Sextent_copy(hid_t dst_id,hid_t src_id);
--   </pre>
h5s_extent_copy :: HId_t -> HId_t -> IO HErr_t
p_H5Sextent_copy :: FunPtr (HId_t -> HId_t -> IO HErr_t)

-- | Determines if two dataspace extents are equal.
--   
--   <pre>
--   htri_t H5Sextent_equal(hid_t sid1, hid_t sid2);
--   </pre>
h5s_extent_equal :: HId_t -> HId_t -> IO HTri_t
p_H5Sextent_equal :: FunPtr (HId_t -> HId_t -> IO HTri_t)

-- | This function selects the entire extent for a dataspace.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sselect_all(hid_t spaceid);
--   </pre>
h5s_select_all :: HId_t -> IO HErr_t
p_H5Sselect_all :: FunPtr (HId_t -> IO HErr_t)

-- | This function de-selects the entire extent for a dataspace.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sselect_none(hid_t spaceid);
--   </pre>
h5s_select_none :: HId_t -> IO HErr_t
p_H5Sselect_none :: FunPtr (HId_t -> IO HErr_t)

-- | Changes the offset of a selection within a simple dataspace extent
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> space_id :: <a>HId_t</a> </tt></i> Dataspace object to
--   reset</li>
--   <li><i><tt> offset :: <a>InArray</a> <tt>HSsize_t</tt> </tt></i>
--   Offset to position the selection at</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Soffset_simple(hid_t space_id, const hssize_t *offset);
--   </pre>
h5s_offset_simple :: HId_t -> InArray HSSize_t -> IO HErr_t
p_H5Soffset_simple :: FunPtr (HId_t -> InArray HSSize_t -> IO HErr_t)

-- | Check whether the selection fits within the extent, with the current
--   offset defined.
--   
--   Determines if the current selection at the current offet fits within
--   the extent for the dataspace.
--   
--   <pre>
--   htri_t H5Sselect_valid(hid_t spaceid);
--   </pre>
h5s_select_valid :: HId_t -> IO HTri_t
p_H5Sselect_valid :: FunPtr (HId_t -> IO HTri_t)
h5s_is_regular_hyperslab :: HId_t -> IO HTri_t
p_H5Sis_regular_hyperslab :: FunPtr (HId_t -> IO HTri_t)
h5s_get_regular_hyperslab :: HId_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> IO HTri_t
p_H5Sget_regular_hyperslab :: FunPtr (HId_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> InArray HSize_t -> IO HTri_t)

-- | Get the number of hyperslab blocks in current hyperslab selection
--   
--   Returns negative on failure
--   
--   <pre>
--   hssize_t H5Sget_select_hyper_nblocks(hid_t spaceid);
--   </pre>
h5s_get_select_hyper_nblocks :: HId_t -> IO HSSize_t
p_H5Sget_select_hyper_nblocks :: FunPtr (HId_t -> IO HSSize_t)

-- | Get the number of points in current element selection
--   
--   Returns negative on failure
--   
--   <pre>
--   hssize_t H5Sget_select_elem_npoints(hid_t spaceid);
--   </pre>
h5s_get_select_elem_npoints :: HId_t -> IO HSSize_t
p_H5Sget_select_elem_npoints :: FunPtr (HId_t -> IO HSSize_t)

-- | Puts a list of the hyperslab blocks into the user's buffer. The blocks
--   start with the <tt>startblock</tt>th block in the list of blocks and
--   put <tt>numblocks</tt> number of blocks into the user's buffer (or
--   until the end of the list of blocks, whichever happen first)
--   
--   The block coordinates have the same dimensionality (rank) as the
--   dataspace they are located within. The list of blocks is formatted as
--   follows: &lt;"start" coordinate&gt; immediately followed by
--   &lt;"opposite" corner coordinate&gt;, followed by the next "start" and
--   "opposite" coordinate, etc. until all the block information requested
--   has been put into the user's buffer.
--   
--   No guarantee of any order of the blocks is implied.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dsid :: <a>HId_t</a> </tt></i> Dataspace ID of selection
--   to query</li>
--   <li><i><tt> startblock :: <tt>HSsize_t</tt> </tt></i> Hyperslab block
--   to start with</li>
--   <li><i><tt> numblocks :: <tt>HSsize_t</tt> </tt></i> Number of
--   hyperslab blocks to get</li>
--   <li><i><tt> buf :: <a>OutArray</a> <tt>HSsize_t</tt> </tt></i> List of
--   hyperslab blocks selected</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sget_select_hyper_blocklist(hid_t spaceid, hsize_t startblock,
--       hsize_t numblocks, hsize_t buf[/*numblocks*/]);
--   </pre>
h5s_get_select_hyper_blocklist :: HId_t -> HSize_t -> HSize_t -> OutArray HSize_t -> IO HErr_t
p_H5Sget_select_hyper_blocklist :: FunPtr (HId_t -> HSize_t -> HSize_t -> OutArray HSize_t -> IO HErr_t)

-- | Puts a list of the element points into the user's buffer. The points
--   start with the <tt>startpoint</tt>th block in the list of points and
--   put <tt>numpoints</tt> number of points into the user's buffer (or
--   until the end of the list of points, whichever happen first)
--   
--   The point coordinates have the same dimensionality (rank) as the
--   dataspace they are located within. The list of points is formatted as
--   follows: <a>coordinate</a> followed by the next coordinate, etc. until
--   all the point information in the selection have been put into the
--   user's buffer.
--   
--   The points are returned in the order they will be interated through
--   when a selection is read<i>written from</i>to disk.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dsid :: <a>HId_t</a> </tt></i> Dataspace ID of selection
--   to query</li>
--   <li><i><tt> startpoint :: <a>HSize_t</a> </tt></i> Element point to
--   start with</li>
--   <li><i><tt> numpoints :: <a>HSize_t</a> </tt></i> Number of element
--   points to get</li>
--   <li><i><tt> buf :: <a>HSize_t</a> </tt></i> List of element points
--   selected</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Sget_select_elem_pointlist(hid_t spaceid, hsize_t startpoint,
--       hsize_t numpoints, hsize_t buf[/*numpoints*/]);
--   </pre>
h5s_get_select_elem_pointlist :: HId_t -> HSize_t -> HSize_t -> OutArray HSize_t -> IO HErr_t
p_H5Sget_select_elem_pointlist :: FunPtr (HId_t -> HSize_t -> HSize_t -> OutArray HSize_t -> IO HErr_t)

-- | Retrieves the bounding box containing the current selection and places
--   it into the user's buffers. The start and end buffers must be large
--   enough to hold the dataspace rank number of coordinates. The bounding
--   box exactly contains the selection, ie. if a 2-D element selection is
--   currently defined with the following points: (4,5), (6,8) (10,7), the
--   bounding box with be (4, 5), (10, 8). Calling this function on a
--   "none" selection returns fail.
--   
--   The bounding box calculations _does_ include the current offset of the
--   selection within the dataspace extent.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dsid :: <a>HId_t</a> </tt></i> Dataspace ID of selection
--   to query</li>
--   <li><i><tt> start :: <a>OutArray</a> <a>HSize_t</a> </tt></i> Starting
--   coordinate of bounding box</li>
--   <li><i><tt> end :: <a>OutArray</a> <a>HSize_t</a> </tt></i> Opposite
--   coordinate of bounding box</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   Weird warning in source: This routine participates in the "Inlining C
--   function pointers" pattern, don't call it directly, use the
--   appropriate macro defined in H5Sprivate.h.
--   
--   <pre>
--   herr_t H5Sget_select_bounds(hid_t spaceid, hsize_t start[],
--       hsize_t end[]);
--   </pre>
h5s_get_select_bounds :: HId_t -> OutArray HSize_t -> OutArray HSize_t -> IO HErr_t
p_H5Sget_select_bounds :: FunPtr (HId_t -> OutArray HSize_t -> OutArray HSize_t -> IO HErr_t)
h5s_get_select_type :: HId_t -> IO H5S_sel_type
p_H5Sget_select_type :: FunPtr (HId_t -> IO H5S_sel_type)

-- | Given a dataspace ID, converts the object description (including
--   selection) into binary in a buffer.
--   
--   <tt>nalloc</tt> is the size of the buffer on input, the size of the
--   encoded data on output. If the buffer is not big enough, no data is
--   written to it (but nalloc is still updated with the size needed).
--   
--   Returns non-negative on success, negative on failure.
h5s_encode1 :: HId_t -> OutArray CChar -> InOut CSize -> IO HErr_t
h5s_encode2 :: HId_t -> OutArray CChar -> InOut CSize -> HId_t -> IO HErr_t
p_H5Sencode1 :: FunPtr (HId_t -> OutArray CChar -> InOut CSize -> IO HErr_t)
p_H5Sencode2 :: FunPtr (HId_t -> OutArray CChar -> InOut CSize -> HId_t -> IO HErr_t)
h5s_encode :: HId_t -> OutArray CChar -> InOut CSize -> IO HErr_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5S.H5S_class_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5S.H5S_sel_type
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5S.H5S_class_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5S.H5S_sel_type
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5S.H5S_seloper_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5S.H5S_class_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5S.H5S_sel_type
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5S.H5S_seloper_t

module Bindings.HDF5.Raw.H5O

-- | Copy only immediate members
h5o_COPY_SHALLOW_HIERARCHY_FLAG :: Num a => a

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

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

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

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

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

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

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

-- | No shared messages
h5o_SHMESG_NONE_FLAG :: Num a => a

-- | Simple Dataspace Message
h5o_SHMESG_SDSPACE_FLAG :: Num a => a

-- | Datatype Message
h5o_SHMESG_DTYPE_FLAG :: Num a => a

-- | Fill Value Message
h5o_SHMESG_FILL_FLAG :: Num a => a

-- | Filter pipeline message
h5o_SHMESG_PLINE_FLAG :: Num a => a

-- | Attribute Message
h5o_SHMESG_ATTR_FLAG :: Num a => a
h5o_SHMESG_ALL_FLAG :: Num a => a

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

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

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

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

-- | Store access, modification, change &amp; birth times for object
h5o_HDR_STORE_TIMES :: Num a => a
h5o_HDR_ALL_FLAGS :: Num a => a
h5o_SHMESG_MAX_NINDEXES :: Num a => a
h5o_SHMESG_MAX_LIST_SIZE :: Num a => a

-- | Types of objects in file
newtype H5O_type_t
H5O_type_t :: Int32 -> H5O_type_t

-- | Unknown object type
h5o_TYPE_UNKNOWN :: H5O_type_t

-- | Object is a group
h5o_TYPE_GROUP :: H5O_type_t

-- | Object is a dataset
h5o_TYPE_DATASET :: H5O_type_t

-- | Object is a named data type
h5o_TYPE_NAMED_DATATYPE :: H5O_type_t

-- | Number of different object types
h5o_TYPE_NTYPES :: Num a => a
data H5O_hdr_info_t
H5O_hdr_info_t :: CUInt -> CUInt -> CUInt -> CUInt -> HSize_t -> HSize_t -> HSize_t -> HSize_t -> Word64 -> Word64 -> H5O_hdr_info_t
[h5o_hdr_info_t'version] :: H5O_hdr_info_t -> CUInt
[h5o_hdr_info_t'nmesgs] :: H5O_hdr_info_t -> CUInt
[h5o_hdr_info_t'nchunks] :: H5O_hdr_info_t -> CUInt
[h5o_hdr_info_t'flags] :: H5O_hdr_info_t -> CUInt
[h5o_hdr_info_t'space'total] :: H5O_hdr_info_t -> HSize_t
[h5o_hdr_info_t'space'meta] :: H5O_hdr_info_t -> HSize_t
[h5o_hdr_info_t'space'mesg] :: H5O_hdr_info_t -> HSize_t
[h5o_hdr_info_t'space'free] :: H5O_hdr_info_t -> HSize_t
[h5o_hdr_info_t'mesg'present] :: H5O_hdr_info_t -> Word64
[h5o_hdr_info_t'mesg'shared] :: H5O_hdr_info_t -> Word64
data H5O_stat_t
H5O_stat_t :: HSize_t -> HSize_t -> CUInt -> CUInt -> H5O_stat_t
[h5o_stat_t'size] :: H5O_stat_t -> HSize_t
[h5o_stat_t'free] :: H5O_stat_t -> HSize_t
[h5o_stat_t'nmesgs] :: H5O_stat_t -> CUInt
[h5o_stat_t'nchunks] :: H5O_stat_t -> CUInt

-- | Typedef for message creation indexes
newtype H5O_msg_crt_idx_t
H5O_msg_crt_idx_t :: Word32 -> H5O_msg_crt_idx_t
p'H5O_hdr_info_t'version :: Ptr H5O_hdr_info_t -> Ptr CUInt
newtype H5O_mcdt_search_ret_t
H5O_mcdt_search_ret_t :: Int32 -> H5O_mcdt_search_ret_t
p'H5O_stat_t'size :: Ptr H5O_stat_t -> Ptr HSize_t

-- | Abort H5Ocopy
p'H5O_hdr_info_t'nmesgs :: Ptr H5O_hdr_info_t -> Ptr CUInt
p'H5O_stat_t'free :: Ptr H5O_stat_t -> Ptr HSize_t
p'H5O_hdr_info_t'nchunks :: Ptr H5O_hdr_info_t -> Ptr CUInt
h5o_MCDT_SEARCH_ERROR :: H5O_mcdt_search_ret_t
p'H5O_stat_t'nmesgs :: Ptr H5O_stat_t -> Ptr CUInt

-- | Continue the global search of all committed datatypes in the
--   destination file
p'H5O_hdr_info_t'flags :: Ptr H5O_hdr_info_t -> Ptr CUInt
p'H5O_stat_t'nchunks :: Ptr H5O_stat_t -> Ptr CUInt
h5o_MCDT_SEARCH_CONT :: H5O_mcdt_search_ret_t
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

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

-- | Callback to invoke when completing the search for a matching committed
--   datatype from the committed dtype list
--   
--   <pre>
--   typedef H5O_mcdt_search_ret_t (*H5O_mcdt_search_cb_t)(void *op_data);
--   </pre>
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
type H5O_mcdt_search_cb_t a = FunPtr InOut a -> IO H5O_mcdt_search_ret_t
p'H5O_hdr_info_t'mesg'present :: Ptr H5O_hdr_info_t -> Ptr Word64

-- | Opens an object within an HDF5 file.
--   
--   This function opens an object in the same way that <tt>h5g_open2</tt>,
--   <tt>h5t_open2</tt>, and <tt>h5d_open2</tt> do. However,
--   <a>h5o_open</a> 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 <a>h5o_close</a> or
--   <tt>h5g_close</tt>, <tt>h5t_close</tt>, or <tt>h5d_close</tt>.
--   
--   On success, returns an open object identifier On failure, returns a
--   negative value.
--   
--   <pre>
--   hid_t H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id);
--   </pre>
p'H5O_hdr_info_t'mesg'shared :: Ptr H5O_hdr_info_t -> Ptr Word64
h5o_open :: HId_t -> CString -> HId_t -> IO HId_t
p_H5Oopen :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

-- | 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 <a>h5o_open</a> and should be closed with
--   <a>h5o_close</a> or a type-specific closing function (such as
--   <tt>h5g_close</tt>).
--   
--   This function is very dangerous if called on an invalid address. For
--   this reason, <a>h5o_incr_refcount</a> should be used to prevent HDF5
--   from deleting any object that is referenced by address (e.g. by a
--   user-defined link). <a>h5o_decr_refcount</a> 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
--   <a>h5o_open_by_addr</a>, 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.
--   
--   <pre>
--   hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr);
--   </pre>
h5o_open_by_addr :: HId_t -> HAddr_t -> IO HId_t
p_H5Oopen_by_addr :: FunPtr (HId_t -> HAddr_t -> IO HId_t)

-- | Opens an object within an HDF5 file, according to the offset within an
--   index.
--   
--   This function opens an object in the same way that <tt>h5g_open</tt>,
--   <tt>h5t_open</tt>, and <tt>h5d_open</tt> do. However, <a>h5o_open</a>
--   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 <a>h5o_close</a> or
--   <tt>h5g_close</tt>, <tt>h5t_close</tt>, or <tt>h5d_close</tt>.
--   
--   On success, returns an open object identifier On failure, returns a
--   negative value.
--   
--   <pre>
--   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);
--   </pre>
h5o_open_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HId_t
p_H5Oopen_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HId_t)

-- | Determine if a linked-to object exists
--   
--   <pre>
--   htri_t H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id);
--   </pre>
h5o_exists_by_name :: HId_t -> CString -> HId_t -> IO HTri_t
p_H5Oexists_by_name :: FunPtr (HId_t -> CString -> HId_t -> IO HTri_t)

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

-- | 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,
--   <a>h5o_decr_refcount</a> should be used.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Oincr_refcount(hid_t object_id);
--   </pre>
h5o_incr_refcount :: HId_t -> IO HErr_t
p_H5Oincr_refcount :: FunPtr (HId_t -> IO HErr_t)

-- | 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 <a>h5o_incr_refcount</a>
--   has already been used.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Odecr_refcount(hid_t object_id);
--   </pre>
h5o_decr_refcount :: HId_t -> IO HErr_t
p_H5Odecr_refcount :: FunPtr (HId_t -> IO HErr_t)

-- | Copy an object (group or dataset) to destination location within a
--   file or cross files. <tt>plist_id</tt> is a property list which is
--   used to pass user options and properties to the copy. The name,
--   <tt>dst_name</tt>, must not already be taken by some other object in
--   the destination group.
--   
--   <a>h5o_copy</a> will fail if the name of the destination object exists
--   in the destination group. For example, <tt>H5Ocopy(fid_src, "<i>dset",
--   fid_dst, "</i>dset", ...)</tt> will fail if "/dset" exists in the
--   destination file
--   
--   OPTIONS THAT HAVE BEEN IMPLEMENTED:
--   
--   <ul>
--   <li><i><a>h5o_COPY_SHALLOW_HIERARCHY_FLAG</a></i> If this flag is
--   specified, only immediate members of the group are copied. Otherwise
--   (default), it will recursively copy all objects below the group</li>
--   <li><i><a>h5o_COPY_EXPAND_SOFT_LINK_FLAG</a></i> 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</li>
--   <li><i><a>h5o_COPY_WITHOUT_ATTR_FLAG</a></i> If this flag is
--   specified, it will copy object without copying attributes. Otherwise
--   (default), it will copy object along with all its attributes</li>
--   <li><i><a>h5o_COPY_EXPAND_REFERENCE_FLAG</a></i> 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 <a>h5o_copy</a>. 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</li>
--   </ul>
--   
--   OPTIONS THAT MAY APPLY TO COPY IN THE FUTURE:
--   
--   <ul>
--   <li><i><a>h5o_COPY_EXPAND_EXT_LINK_FLAG</a></i> 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)</li>
--   </ul>
--   
--   PROPERTIES THAT MAY APPLY TO COPY IN FUTURE:
--   
--   <ul>
--   <li>Change data layout such as chunk size</li>
--   <li>Add filter such as data compression.</li>
--   <li>Add an attribute to the copied object(s) that say the date/time
--   for the copy or other information about the source file.</li>
--   </ul>
--   
--   The intermediate group creation property should be passed in using the
--   lcpl instead of the ocpypl.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> src_loc_id :: HId_t </tt></i> Source file or group
--   identifier.</li>
--   <li><i><tt> src_name :: CString </tt></i> Name of the source object to
--   be copied</li>
--   <li><i><tt> dst_loc_id :: HId_t </tt></i> Destination file or group
--   identifier</li>
--   <li><i><tt> dst_name :: CString </tt></i> Name of the destination
--   object</li>
--   <li><i><tt> ocpypl_id :: HId_t </tt></i> Properties which apply to the
--   copy</li>
--   <li><i><tt> lcpl_id :: HId_t </tt></i> Properties which apply to the
--   new hard link</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   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);
--   </pre>
h5o_copy :: HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Ocopy :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

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

-- | Gives the specified object a comment. The <tt>comment</tt> string
--   should be a null terminated string. An object can have only one
--   comment at a time. Passing NULL for the <tt>comment</tt> 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.
--   
--   <pre>
--   herr_t H5Oset_comment_by_name(hid_t loc_id, const char *name,
--       const char *comment, hid_t lapl_id);
--   </pre>
h5o_set_comment_by_name :: HId_t -> CString -> CString -> HId_t -> IO HErr_t
p_H5Oset_comment_by_name :: FunPtr (HId_t -> CString -> CString -> HId_t -> IO HErr_t)

-- | 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.
--   
--   <pre>
--   ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize);
--   </pre>
h5o_get_comment :: HId_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Oget_comment :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

-- | 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.
--   
--   <pre>
--   ssize_t H5Oget_comment_by_name(hid_t loc_id, const char *name,
--       char *comment, size_t bufsize, hid_t lapl_id);
--   </pre>
h5o_get_comment_by_name :: HId_t -> CString -> OutArray CChar -> CSize -> HId_t -> IO CSSize
p_H5Oget_comment_by_name :: FunPtr (HId_t -> CString -> OutArray CChar -> CSize -> HId_t -> IO CSSize)

-- | Close an open file object.
--   
--   This is the companion to <a>h5o_open</a>. 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
--   <tt>h5g_close</tt>, <tt>h5d_close</tt>, or <tt>h5t_close</tt>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Oclose(hid_t object_id);
--   </pre>
h5o_close :: HId_t -> IO HErr_t
p_H5Oclose :: FunPtr (HId_t -> IO HErr_t)
h5o_are_mdc_flushes_disabled :: HId_t -> Out hbool_t -> IO HErr_t
h5o_disable_mdc_flushes :: HId_t -> IO HErr_t
h5o_enable_mdc_flushes :: HId_t -> IO HErr_t
p_H5Oare_mdc_flushes_disabled :: FunPtr (HId_t -> Out hbool_t -> IO HErr_t)
h5o_flush :: HId_t -> IO HErr_t
p_H5Odisable_mdc_flushes :: FunPtr (HId_t -> IO HErr_t)
h5o_refresh :: HId_t -> IO HErr_t
p_H5Oenable_mdc_flushes :: FunPtr (HId_t -> IO HErr_t)
p_H5Oflush :: FunPtr (HId_t -> IO HErr_t)
p_H5Orefresh :: FunPtr (HId_t -> IO HErr_t)
h5o_INFO_BASIC :: Num a => a
h5o_INFO_TIME :: Num a => a
h5o_INFO_NUM_ATTRS :: Num a => a
h5o_INFO_HDR :: Num a => a
h5o_INFO_META_SIZE :: Num a => a
h5o_INFO_ALL :: Num a => a
data H5O_info1_t
H5O_info1_t :: CULong -> HAddr_t -> H5O_type_t -> CUInt -> CTime -> CTime -> CTime -> CTime -> HSize_t -> H5O_hdr_info_t -> H5_ih_info_t -> H5_ih_info_t -> H5O_info1_t
[h5o_info1_t'fileno] :: H5O_info1_t -> CULong
[h5o_info1_t'addr] :: H5O_info1_t -> HAddr_t
[h5o_info1_t'type] :: H5O_info1_t -> H5O_type_t
[h5o_info1_t'rc] :: H5O_info1_t -> CUInt
[h5o_info1_t'atime] :: H5O_info1_t -> CTime
[h5o_info1_t'mtime] :: H5O_info1_t -> CTime
[h5o_info1_t'ctime] :: H5O_info1_t -> CTime
[h5o_info1_t'btime] :: H5O_info1_t -> CTime
[h5o_info1_t'num_attrs] :: H5O_info1_t -> HSize_t
[h5o_info1_t'hdr] :: H5O_info1_t -> H5O_hdr_info_t
[h5o_info1_t'meta_size'obj] :: H5O_info1_t -> H5_ih_info_t
[h5o_info1_t'meta_size'attr] :: H5O_info1_t -> H5_ih_info_t
data H5O_token_t
H5O_token_t :: CUChar -> H5O_token_t
[h5o_token_t'__data] :: H5O_token_t -> CUChar
p'H5O_token_t'__data :: Ptr H5O_token_t -> Ptr CUChar
p'H5O_info1_t'fileno :: Ptr H5O_info1_t -> Ptr CULong
p'H5O_info1_t'addr :: Ptr H5O_info1_t -> Ptr HAddr_t
data H5O_info2_t
H5O_info2_t :: CULong -> H5O_token_t -> H5O_type_t -> CUInt -> CTime -> CTime -> CTime -> CTime -> HSize_t -> H5O_info2_t
[h5o_info2_t'fileno] :: H5O_info2_t -> CULong
[h5o_info2_t'token] :: H5O_info2_t -> H5O_token_t
[h5o_info2_t'type] :: H5O_info2_t -> H5O_type_t
[h5o_info2_t'rc] :: H5O_info2_t -> CUInt
[h5o_info2_t'atime] :: H5O_info2_t -> CTime
[h5o_info2_t'mtime] :: H5O_info2_t -> CTime
[h5o_info2_t'ctime] :: H5O_info2_t -> CTime
[h5o_info2_t'btime] :: H5O_info2_t -> CTime
[h5o_info2_t'num_attrs] :: H5O_info2_t -> HSize_t
p'H5O_info1_t'type :: Ptr H5O_info1_t -> Ptr H5O_type_t
type H5O_info_t = H5O_info1_t
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'mtime :: Ptr H5O_info1_t -> Ptr CTime
p'H5O_info1_t'ctime :: Ptr H5O_info1_t -> Ptr CTime
p'H5O_info2_t'fileno :: Ptr H5O_info2_t -> Ptr CULong
p'H5O_info1_t'btime :: Ptr H5O_info1_t -> Ptr CTime
p'H5O_info2_t'token :: Ptr H5O_info2_t -> Ptr H5O_token_t
p'H5O_info1_t'num_attrs :: Ptr H5O_info1_t -> Ptr HSize_t
p'H5O_info2_t'type :: Ptr H5O_info2_t -> Ptr H5O_type_t
p'H5O_info1_t'hdr :: Ptr H5O_info1_t -> Ptr H5O_hdr_info_t
p'H5O_info2_t'rc :: Ptr H5O_info2_t -> Ptr CUInt
p'H5O_info1_t'meta_size'obj :: Ptr H5O_info1_t -> Ptr H5_ih_info_t
p'H5O_info2_t'atime :: Ptr H5O_info2_t -> Ptr CTime
p'H5O_info1_t'meta_size'attr :: Ptr H5O_info1_t -> Ptr H5_ih_info_t
p'H5O_info2_t'mtime :: Ptr H5O_info2_t -> Ptr CTime
p'H5O_info2_t'ctime :: Ptr H5O_info2_t -> Ptr CTime
p'H5O_info2_t'btime :: Ptr H5O_info2_t -> Ptr CTime
p'H5O_info2_t'num_attrs :: Ptr H5O_info2_t -> Ptr HSize_t
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
type H5O_iterate_t a = FunPtr HId_t -> CString -> In H5O_info_t -> InOut a -> IO HErr_t
h5o_get_info1 :: HId_t -> Out H5O_info1_t -> IO HErr_t
h5o_get_info2 :: HId_t -> Out H5O_info1_t -> CUInt -> IO HErr_t
p_H5Oget_info1 :: FunPtr (HId_t -> Out H5O_info1_t -> IO HErr_t)
p_H5Oget_info2 :: FunPtr (HId_t -> Out H5O_info1_t -> CUInt -> IO HErr_t)
h5o_get_info :: HId_t -> Out H5O_info_t -> IO HErr_t
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
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
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)
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)
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_name1 :: HId_t -> CString -> Out H5O_info1_t -> HId_t -> IO HErr_t
h5o_get_info_by_name2 :: HId_t -> CString -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t
p_H5Oget_info_by_name1 :: FunPtr (HId_t -> CString -> Out H5O_info1_t -> HId_t -> IO HErr_t)
p_H5Oget_info_by_name2 :: FunPtr (HId_t -> CString -> Out H5O_info1_t -> CUInt -> HId_t -> IO HErr_t)
h5o_get_info_by_name :: HId_t -> CString -> Out H5O_info_t -> HId_t -> IO HErr_t

-- | 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.
--   
--   <pre>
--   herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
--       H5O_iterate_t op, void *op_data);
--   </pre>
h5o_visit1 :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> IO HErr_t
h5o_visit2 :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> IO HErr_t
p_H5Ovisit1 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> IO HErr_t)
p_H5Ovisit2 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate1_t a -> InOut a -> CUInt -> IO HErr_t)
h5o_visit :: HId_t -> H5_index_t -> H5_iter_order_t -> H5O_iterate_t a -> InOut a -> IO HErr_t

-- | 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.
--   
--   <pre>
--   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);
--   </pre>
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
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
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)
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)
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
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_hdr_info_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_info1_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_info2_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_msg_crt_idx_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_stat_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_token_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5O.H5O_type_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5O.H5O_msg_crt_idx_t
instance GHC.Internal.Read.Read Bindings.HDF5.Raw.H5O.H5O_msg_crt_idx_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_hdr_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_info1_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_info2_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_mcdt_search_ret_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_msg_crt_idx_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_stat_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_token_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5O.H5O_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_hdr_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_info1_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_info2_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_mcdt_search_ret_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_msg_crt_idx_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_stat_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_token_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5O.H5O_type_t

module Bindings.HDF5.Raw.H5L

-- | Maximum length of a link's name (encoded in a 32-bit unsigned integer)
h5l_MAX_LINK_NAME_LEN :: Word32

-- | Macro to indicate operation occurs on same location
h5l_SAME_LOC :: HId_t

-- | Current version of the H5L_class_t struct
h5l_LINK_CLASS_T_VERS :: Num a => a

-- | Link class types.
--   
--   Values less than 64 are reserved for the HDF5 library's internal use.
--   Values 64 to 255 are for "user-defined" link class types; these types
--   are defined by HDF5 but their behavior can be overridden by users.
--   Users who want to create new classes of links should contact the HDF5
--   development team at <a>mailto:hdfhelp@ncsa.uiuc.edu</a>.
--   
--   These values can never change because they appear in HDF5 files.
newtype H5L_type_t
H5L_type_t :: Int32 -> H5L_type_t

-- | Invalid link type id
h5l_TYPE_ERROR :: H5L_type_t

-- | Hard link id
h5l_TYPE_HARD :: H5L_type_t

-- | Soft link id
h5l_TYPE_SOFT :: H5L_type_t

-- | External link id
h5l_TYPE_EXTERNAL :: H5L_type_t

-- | Maximum link type id
h5l_TYPE_MAX :: H5L_type_t

-- | Maximum value link value for "built-in" link types
h5l_TYPE_BUILTIN_MAX :: H5L_type_t

-- | Link ids at or above this value are "user-defined" link types.
h5l_TYPE_UD_MIN :: H5L_type_t

-- | Link creation callback
--   
--   <pre>
--   typedef herr_t (*H5L_create_func_t)(const char *link_name, hid_t loc_group,
--       const void *lnkdata, size_t lnkdata_size, hid_t lcpl_id);
--   </pre>
type H5L_create_func_t a = FunPtr CString -> HId_t -> Ptr a -> CSize -> HId_t -> IO HErr_t

-- | Callback for when the link is moved
--   
--   <pre>
--   typedef herr_t (*H5L_move_func_t)(const char *new_name, hid_t new_loc,
--       const void *lnkdata, size_t lnkdata_size);
--   </pre>
type H5L_move_func_t a = FunPtr CString -> HId_t -> Ptr a -> CSize -> IO HErr_t

-- | Callback for when the link is copied
--   
--   <pre>
--   typedef herr_t (*H5L_copy_func_t)(const char *new_name, hid_t new_loc,
--       const void *lnkdata, size_t lnkdata_size);
--   </pre>
type H5L_copy_func_t a = FunPtr CString -> HId_t -> Ptr a -> CSize -> IO HErr_t

-- | Callback during link traversal
--   
--   <pre>
--   typedef herr_t (*H5L_traverse_func_t)(const char *link_name, hid_t cur_group,
--       const void *lnkdata, size_t lnkdata_size, hid_t lapl_id);
--   </pre>
type H5L_traverse_func_t a = FunPtr CString -> HId_t -> Ptr a -> CSize -> HId_t -> IO HErr_t

-- | Callback for when the link is deleted
--   
--   <pre>
--   typedef herr_t (*H5L_delete_func_t)(const char *link_name, hid_t file,
--       const void *lnkdata, size_t lnkdata_size);
--   </pre>
type H5L_delete_func_t a = FunPtr CString -> HId_t -> Ptr a -> CSize -> IO HErr_t

-- | Callback for querying the link
--   
--   Returns the size of the buffer needed
--   
--   <pre>
--   typedef ssize_t (*H5L_query_func_t)(const char *link_name, const void *lnkdata,
--       size_t lnkdata_size, void *buf /*out*/, size_t buf_size);
--   </pre>
type H5L_query_func_t a b = FunPtr CString -> Ptr a -> CSize -> Out b -> CSize -> IO CSSize

-- | User-defined link types
--   
--   Version number of this struct
--   
--   Link type ID
--   
--   Comment for debugging
--   
--   Callback during link creation
--   
--   Callback after moving link
--   
--   Callback after copying link
--   
--   Callback during link traversal
--   
--   Callback for link deletion
--   
--   Callback for queries
data H5L_class_t
H5L_class_t :: CInt -> H5L_type_t -> CString -> H5L_create_func_t () -> H5L_move_func_t () -> H5L_copy_func_t () -> H5L_traverse_func_t () -> H5L_delete_func_t () -> H5L_query_func_t () () -> H5L_class_t
[h5l_class_t'version] :: H5L_class_t -> CInt
[h5l_class_t'id] :: H5L_class_t -> H5L_type_t
[h5l_class_t'comment] :: H5L_class_t -> CString
[h5l_class_t'create_func] :: H5L_class_t -> H5L_create_func_t ()
[h5l_class_t'move_func] :: H5L_class_t -> H5L_move_func_t ()
[h5l_class_t'copy_func] :: H5L_class_t -> H5L_copy_func_t ()
[h5l_class_t'trav_func] :: H5L_class_t -> H5L_traverse_func_t ()
[h5l_class_t'del_func] :: H5L_class_t -> H5L_delete_func_t ()
[h5l_class_t'query_func] :: H5L_class_t -> H5L_query_func_t () ()

-- | Callback for external link traversal
--   
--   <pre>
--   typedef herr_t (*H5L_elink_traverse_t)(const char *parent_file_name,
--       const char *parent_group_name, const char *child_file_name,
--       const char *child_object_name, unsigned *acc_flags, hid_t fapl_id,
--       void *op_data);
--   </pre>
type H5L_elink_traverse_t a = FunPtr CString -> CString -> CString -> CString -> Ptr CUInt -> HId_t -> Ptr a -> IO HErr_t
p'H5L_class_t'version :: Ptr H5L_class_t -> Ptr CInt
p'H5L_class_t'id :: Ptr H5L_class_t -> Ptr H5L_type_t

-- | Renames an object within an HDF5 file and moves it to a new group. The
--   original name <tt>src</tt> is unlinked from the group graph and then
--   inserted with the new name <tt>dst</tt> (which can specify a new path
--   for the object) as an atomic operation. The names are interpreted
--   relative to <tt>src_loc_id</tt> and <tt>dst_loc_id</tt>, which are
--   either file IDs or group ID.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lmove(hid_t src_loc, const char *src_name, hid_t dst_loc,
--       const char *dst_name, hid_t lcpl_id, hid_t lapl_id);
--   </pre>
p'H5L_class_t'comment :: Ptr H5L_class_t -> Ptr CString
p'H5L_class_t'create_func :: Ptr H5L_class_t -> Ptr (H5L_create_func_t ())
p'H5L_class_t'move_func :: Ptr H5L_class_t -> Ptr (H5L_move_func_t ())
p'H5L_class_t'copy_func :: Ptr H5L_class_t -> Ptr (H5L_copy_func_t ())
p'H5L_class_t'trav_func :: Ptr H5L_class_t -> Ptr (H5L_traverse_func_t ())
p'H5L_class_t'del_func :: Ptr H5L_class_t -> Ptr (H5L_delete_func_t ())
h5l_move :: HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p'H5L_class_t'query_func :: Ptr H5L_class_t -> Ptr (H5L_query_func_t () ())
p_H5Lmove :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)
h5l_copy :: HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Lcopy :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

-- | Creates a hard link from <tt>new_name</tt> to <tt>cur_name</tt>.
--   
--   <tt>cur_name</tt> must name an existing object. <tt>cur_name</tt> and
--   <tt>new_name</tt> are interpreted relative to <tt>cur_loc_id</tt> and
--   <tt>new_loc_id</tt>, which are either file IDs or group IDs.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Lcreate_hard(hid_t cur_loc, const char *cur_name,
--       hid_t dst_loc, const char *dst_name, hid_t lcpl_id, hid_t lapl_id);
--   </pre>
h5l_create_hard :: HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Lcreate_hard :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

-- | Creates a soft link from <tt>link_name</tt> to <tt>link_target</tt>.
--   
--   <tt>link_target</tt> can be anything and is interpreted at lookup time
--   relative to the group which contains the final component of
--   <tt>link_name</tt>. For instance, if <tt>link_target</tt> is "./foo"
--   and <tt>link_name</tt> is ".<i>x</i>y<i>bar" and a request is made for
--   ".</i>x<i>y</i>bar" then the actual object looked up is
--   ".<i>x</i>y<i>.</i>foo".
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lcreate_soft(const char *link_target, hid_t link_loc_id,
--       const char *link_name, hid_t lcpl_id, hid_t lapl_id);
--   </pre>
h5l_create_soft :: CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Lcreate_soft :: FunPtr (CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

-- | Removes the specified <tt>name</tt> from the group graph and
--   decrements the link count for the object to which <tt>name</tt>
--   points. If the link count reaches zero then all file-space associated
--   with the object will be reclaimed (but if the object is open, then the
--   reclamation of the file space is delayed until all handles to the
--   object are closed).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Ldelete(hid_t loc_id, const char *name, hid_t lapl_id);
--   </pre>
h5l_delete :: HId_t -> CString -> HId_t -> IO HErr_t
p_H5Ldelete :: FunPtr (HId_t -> CString -> HId_t -> IO HErr_t)

-- | Removes the specified link from the group graph and decrements the
--   link count for the object to which it points, according to the order
--   within an index.
--   
--   If the link count reaches zero then all file-space associated with the
--   object will be reclaimed (but if the object is open, then the
--   reclamation of the file space is delayed until all handles to the
--   object are closed).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Ldelete_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);
--   </pre>
h5l_delete_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HErr_t
p_H5Ldelete_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HErr_t)

-- | Returns the link value of a link whose name is <tt>name</tt>. For
--   symbolic links, this is the path to which the link points, including
--   the null terminator. For user-defined links, it is the link buffer.
--   
--   At most <tt>size</tt> bytes are copied to the <tt>buf</tt> result
--   buffer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lget_val(hid_t loc_id, const char *name, void *buf/*out*/,
--       size_t size, hid_t lapl_id);
--   </pre>
h5l_get_val :: HId_t -> CString -> OutArray a -> CSize -> HId_t -> IO HErr_t
p_H5Lget_val :: FunPtr (HId_t -> CString -> OutArray a -> CSize -> HId_t -> IO HErr_t)

-- | Returns the link value of a link, according to the order of an index.
--   For symbolic links, this is the path to which the link points,
--   including the null terminator. For user-defined links, it is the link
--   buffer.
--   
--   At most <tt>size</tt> bytes are copied to the <tt>buf</tt> result
--   buffer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lget_val_by_idx(hid_t loc_id, const char *group_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
--       void *buf/*out*/, size_t size, hid_t lapl_id);
--   </pre>
h5l_get_val_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray a -> CSize -> HId_t -> IO HErr_t
p_H5Lget_val_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray a -> CSize -> HId_t -> IO HErr_t)

-- | Checks if a link of a given name exists in a group
--   
--   <pre>
--   htri_t H5Lexists(hid_t loc_id, const char *name, hid_t lapl_id);
--   </pre>
h5l_exists :: HId_t -> CString -> HId_t -> IO HTri_t
p_H5Lexists :: FunPtr (HId_t -> CString -> HId_t -> IO HTri_t)

-- | Gets name for a link, according to the order within an index.
--   
--   Same pattern of behavior as <a>h5i_get_name</a>.
--   
--   On success, returns non-negative length of name, with information in
--   <tt>name</tt> buffer On failure,returns a negative value.
--   
--   <pre>
--   ssize_t H5Lget_name_by_idx(hid_t loc_id, const char *group_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
--       char *name /*out*/, size_t size, hid_t lapl_id);
--   </pre>
h5l_get_name_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray CChar -> CSSize -> HId_t -> IO CSSize
p_H5Lget_name_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray CChar -> CSSize -> HId_t -> IO CSSize)

-- | Creates a user-defined link of type <tt>link_type</tt> named
--   <tt>link_name</tt> with user-specified data <tt>udata</tt>.
--   
--   The format of the information pointed to by <tt>udata</tt> is defined
--   by the user. <tt>udata_size</tt> holds the size of this buffer.
--   
--   <tt>link_name</tt> is interpreted relative to <tt>link_loc_id</tt>.
--   
--   The property list specified by <tt>lcpl_id</tt> holds properties used
--   to create the link.
--   
--   The link class of the new link must already be registered with the
--   library.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lcreate_ud(hid_t link_loc_id, const char *link_name,
--       H5L_type_t link_type, const void *udata, size_t udata_size, hid_t lcpl_id,
--       hid_t lapl_id);
--   </pre>
h5l_create_ud :: HId_t -> CString -> H5L_type_t -> In a -> CSize -> HId_t -> HId_t -> IO HErr_t
p_H5Lcreate_ud :: FunPtr (HId_t -> CString -> H5L_type_t -> In a -> CSize -> HId_t -> HId_t -> IO HErr_t)

-- | Registers a class of user-defined links, or changes the behavior of an
--   existing class.
--   
--   The link class passed in will override any existing link class for the
--   specified link class ID. It must at least include a <a>H5L_class_t</a>
--   version (which should be <a>h5l_LINK_CLASS_T_VERS</a>), a link class
--   ID, and a traversal function.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lregister(const H5L_class_t *cls);
--   </pre>
h5l_register :: In H5L_class_t -> IO HErr_t
p_H5Lregister :: FunPtr (In H5L_class_t -> IO HErr_t)

-- | Unregisters a class of user-defined links, preventing them from being
--   traversed, queried, moved, etc.
--   
--   A link class can be re-registered using <a>h5l_register</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lunregister(H5L_type_t id);
--   </pre>
h5l_unregister :: H5L_type_t -> IO HErr_t
p_H5Lunregister :: FunPtr (H5L_type_t -> IO HErr_t)

-- | Tests whether a user-defined link class has been registered or not.
--   
--   <pre>
--   htri_t H5Lis_registered(H5L_type_t id);
--   </pre>
h5l_is_registered :: H5L_type_t -> IO HTri_t
p_H5Lis_registered :: FunPtr (H5L_type_t -> IO HTri_t)

-- | Given a buffer holding the "link value" from an external link, gets
--   pointers to the information within the link value buffer.
--   
--   External link link values contain some flags and two NULL-terminated
--   strings, one after the other.
--   
--   The <tt>flags</tt> value will be filled in and <tt>filename</tt> and
--   <tt>obj_path</tt> will be set to pointers within <tt>ext_linkval</tt>
--   (unless any of these values is NULL).
--   
--   Using this function on strings that aren't external link
--   <tt>udata</tt> buffers can result in segmentation faults.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lunpack_elink_val(const void *ext_linkval/*in*/, size_t link_size,
--      unsigned *flags, const char **filename/*out*/, const char **obj_path /*out*/);
--   </pre>
h5l_unpack_elink_val :: InArray a -> CSize -> Out CUInt -> Out (Ptr CChar) -> Out (Ptr CChar) -> IO HErr_t
p_H5Lunpack_elink_val :: FunPtr (InArray a -> CSize -> Out CUInt -> Out (Ptr CChar) -> Out (Ptr CChar) -> IO HErr_t)

-- | Creates an external link from <tt>link_name</tt> to <tt>obj_name</tt>.
--   
--   External links are links to objects in other HDF5 files. They are
--   allowed to "dangle" like soft links internal to a file.
--   <tt>file_name</tt> is the name of the file that <tt>obj_name</tt> is
--   is contained within. If <tt>obj_name</tt> is given as a relative path
--   name, the path will be relative to the root group of
--   <tt>file_name</tt>. <tt>link_name</tt> is interpreted relative to
--   <tt>link_loc_id</tt>, which is either a file ID or a group ID.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Lcreate_external(const char *file_name, const char *obj_name,
--       hid_t link_loc_id, const char *link_name, hid_t lcpl_id, hid_t lapl_id);
--   </pre>
h5l_create_external :: CString -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Lcreate_external :: FunPtr (CString -> CString -> HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)
data H5L_info1_t
H5L_info1_t :: H5L_type_t -> HBool_t -> Int64 -> H5T_cset_t -> HAddr_t -> CSize -> H5L_info1_t
[h5l_info1_t'type] :: H5L_info1_t -> H5L_type_t
[h5l_info1_t'corder_valid] :: H5L_info1_t -> HBool_t
[h5l_info1_t'corder] :: H5L_info1_t -> Int64
[h5l_info1_t'cset] :: H5L_info1_t -> H5T_cset_t
[h5l_info1_t'u'address] :: H5L_info1_t -> HAddr_t
[h5l_info1_t'u'val_size] :: H5L_info1_t -> CSize
p'H5L_info1_t'type :: Ptr H5L_info1_t -> Ptr H5L_type_t
data H5L_info2_t
H5L_info2_t :: H5L_type_t -> HBool_t -> Int64 -> H5T_cset_t -> H5O_token_t -> CSize -> H5L_info2_t
[h5l_info2_t'type] :: H5L_info2_t -> H5L_type_t
[h5l_info2_t'corder_valid] :: H5L_info2_t -> HBool_t
[h5l_info2_t'corder] :: H5L_info2_t -> Int64
[h5l_info2_t'cset] :: H5L_info2_t -> H5T_cset_t
[h5l_info2_t'u'token] :: H5L_info2_t -> H5O_token_t
[h5l_info2_t'u'val_size] :: H5L_info2_t -> CSize
p'H5L_info1_t'corder_valid :: Ptr H5L_info1_t -> Ptr HBool_t
p'H5L_info1_t'corder :: Ptr H5L_info1_t -> Ptr Int64
type H5L_info_t = H5L_info1_t
p'H5L_info1_t'cset :: Ptr H5L_info1_t -> Ptr H5T_cset_t
p'H5L_info1_t'u'address :: Ptr H5L_info1_t -> Ptr HAddr_t
p'H5L_info2_t'type :: Ptr H5L_info2_t -> Ptr H5L_type_t
p'H5L_info1_t'u'val_size :: Ptr H5L_info1_t -> Ptr CSize
p'H5L_info2_t'corder_valid :: Ptr H5L_info2_t -> Ptr HBool_t
p'H5L_info2_t'corder :: Ptr H5L_info2_t -> Ptr Int64
u_H5L_info1_t'u'address :: H5L_info1_t -> HAddr_t -> IO H5L_info1_t
p'H5L_info2_t'cset :: Ptr H5L_info2_t -> Ptr H5T_cset_t
p'H5L_info2_t'u'token :: Ptr H5L_info2_t -> Ptr H5O_token_t
p'H5L_info2_t'u'val_size :: Ptr H5L_info2_t -> Ptr CSize
u_H5L_info1_t'u'val_size :: H5L_info1_t -> CSize -> IO H5L_info1_t
u_H5L_info2_t'u'token :: H5L_info2_t -> H5O_token_t -> IO H5L_info2_t
h5l_get_info1 :: HId_t -> CString -> Out H5L_info1_t -> HId_t -> IO HErr_t
h5l_get_info2 :: HId_t -> CString -> Out H5L_info2_t -> HId_t -> IO HErr_t
u_H5L_info2_t'u'val_size :: H5L_info2_t -> CSize -> IO H5L_info2_t
p_H5Lget_info1 :: FunPtr (HId_t -> CString -> Out H5L_info1_t -> HId_t -> IO HErr_t)
p_H5Lget_info2 :: FunPtr (HId_t -> CString -> Out H5L_info2_t -> HId_t -> IO HErr_t)
h5l_get_info :: HId_t -> CString -> Out H5L_info_t -> HId_t -> IO HErr_t
h5l_get_info_by_idx1 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5L_info1_t -> HId_t -> IO HErr_t
h5l_get_info_by_idx2 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5L_info2_t -> HId_t -> IO HErr_t
p_H5Lget_info_by_idx1 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5L_info1_t -> HId_t -> IO HErr_t)
p_H5Lget_info_by_idx2 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5L_info2_t -> HId_t -> IO HErr_t)
h5l_get_info_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5L_info_t -> HId_t -> IO HErr_t
type H5L_iterate1_t a = FunPtr HId_t -> CString -> In H5L_info1_t -> InOut a -> IO HErr_t
mk'H5L_iterate1_t :: (HId_t -> CString -> In H5L_info1_t -> InOut a -> IO HErr_t) -> IO (FunPtr (HId_t -> CString -> In H5L_info1_t -> InOut a -> IO HErr_t))
type H5L_iterate2_t a = FunPtr HId_t -> CString -> In H5L_info2_t -> InOut a -> IO HErr_t
mk'H5L_iterate2_t :: (HId_t -> CString -> In H5L_info2_t -> InOut a -> IO HErr_t) -> IO (FunPtr (HId_t -> CString -> In H5L_info2_t -> InOut a -> IO HErr_t))
type H5L_iterate_t a = FunPtr HId_t -> CString -> In H5L_info_t -> InOut a -> IO HErr_t
mk'H5L_iterate_t :: (HId_t -> CString -> In H5L_info_t -> InOut a -> IO HErr_t) -> IO (FunPtr (HId_t -> CString -> In H5L_info_t -> InOut a -> IO HErr_t))
h5l_iterate1 :: HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate1_t a -> InOut a -> IO HErr_t
h5l_iterate2 :: HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate2_t a -> InOut a -> IO HErr_t
p_H5Literate1 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate1_t a -> InOut a -> IO HErr_t)
p_H5Literate2 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate2_t a -> InOut a -> IO HErr_t)
h5l_iterate :: HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate_t a -> InOut a -> IO HErr_t
h5l_iterate_by_name1 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate1_t a -> InOut a -> HId_t -> IO HErr_t
h5l_iterate_by_name2 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate2_t a -> InOut a -> HId_t -> IO HErr_t
p_H5Literate_by_name1 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate1_t a -> InOut a -> HId_t -> IO HErr_t)
p_H5Literate_by_name2 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate2_t a -> InOut a -> HId_t -> IO HErr_t)
h5l_iterate_by_name :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5L_iterate_t a -> InOut a -> HId_t -> IO HErr_t
h5l_visit1 :: HId_t -> H5_index_t -> H5_iter_order_t -> H5L_iterate1_t a -> InOut a -> IO HErr_t
h5l_visit2 :: HId_t -> H5_index_t -> H5_iter_order_t -> H5L_iterate2_t a -> InOut a -> IO HErr_t
p_H5Lvisit1 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5L_iterate1_t a -> InOut a -> IO HErr_t)
p_H5Lvisit2 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> H5L_iterate2_t a -> InOut a -> IO HErr_t)
h5l_visit :: HId_t -> H5_index_t -> H5_iter_order_t -> H5L_iterate_t a -> InOut a -> IO HErr_t
h5l_visit_by_name1 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5L_iterate1_t a -> InOut a -> HId_t -> IO HErr_t
h5l_visit_by_name2 :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5L_iterate2_t a -> InOut a -> HId_t -> IO HErr_t
p_H5Lvisit_by_name1 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5L_iterate1_t a -> InOut a -> HId_t -> IO HErr_t)
p_H5Lvisit_by_name2 :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5L_iterate2_t a -> InOut a -> HId_t -> IO HErr_t)
h5l_visit_by_name :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> H5L_iterate_t a -> InOut a -> HId_t -> IO HErr_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5L.H5L_class_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5L.H5L_info1_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5L.H5L_info2_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5L.H5L_type_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5L.H5L_type_t
instance GHC.Internal.Read.Read Bindings.HDF5.Raw.H5L.H5L_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5L.H5L_class_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5L.H5L_info1_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5L.H5L_info2_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5L.H5L_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5L.H5L_class_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5L.H5L_info1_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5L.H5L_info2_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5L.H5L_type_t


-- | The Direct I/O file driver forces the data to be written to the file
--   directly without being copied into system kernel buffer. The main
--   system supporting this feature is Linux.
module Bindings.HDF5.Raw.H5FD.Direct
h5fd_DIRECT :: HId_t


-- | The HDF5 C type <tt>hid_t</tt> is used to represent many, many
--   different things. In this Haskell interface, it is always wrapped up
--   in a newtype indicating its intent. These newtypes all need to be
--   convertible to and from <a>HId_t</a> in order to actually use them
--   with the raw bindings. This modules provides a standard interface for
--   doing so.
module Bindings.HDF5.Core.HId

-- | Types which can be converted to <a>HId_t</a> (i.e., those which can be
--   passed to HDF5 functions)
class HId t
hid :: HId t => t -> HId_t

-- | Types which can be converted from <a>HId_t</a> (i.e., those which can
--   be returned by HDF5 functions)
class FromHId t
uncheckedFromHId :: FromHId t => HId_t -> t

-- | HId types which can also serve as containers for other objects
class HId t => Location t
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Raw.H5I.HId_t
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Raw.H5I.HId_t

module Bindings.HDF5.Raw.H5G

-- | Types of link storage for groups
newtype H5G_storage_type_t
H5G_storage_type_t :: Int32 -> H5G_storage_type_t

-- | Unknown link storage type
h5g_STORAGE_TYPE_UNKNOWN :: H5G_storage_type_t

-- | Links in group are stored with a "symbol table" (this is sometimes
--   called "old-style" groups)
h5g_STORAGE_TYPE_SYMBOL_TABLE :: H5G_storage_type_t

-- | Links are stored in object header
h5g_STORAGE_TYPE_COMPACT :: H5G_storage_type_t

-- | Links are stored in fractal heap &amp; indexed with v2 B-tree
h5g_STORAGE_TYPE_DENSE :: H5G_storage_type_t

-- | Information struct for group (for <a>h5g_get_info</a> <i>
--   <a>h5g_get_info_by_name</a> </i> <a>h5g_get_info_by_idx</a>)
--   
--   Type of storage for links in group
--   
--   Number of links in group
--   
--   Current max. creation order value for group
--   
--   Whether group has a file mounted on it
data H5G_info_t
H5G_info_t :: H5G_storage_type_t -> HSize_t -> Int64 -> HBool_t -> H5G_info_t
[h5g_info_t'storage_type] :: H5G_info_t -> H5G_storage_type_t
[h5g_info_t'nlinks] :: H5G_info_t -> HSize_t
[h5g_info_t'max_corder] :: H5G_info_t -> Int64
[h5g_info_t'mounted] :: H5G_info_t -> HBool_t

-- | Creates a new group relative to <tt>loc_id</tt>, giving it the
--   specified creation property list <tt>gcpl_id</tt> and access property
--   list <tt>gapl_id</tt>. The link to the new group is created with the
--   <tt>lcpl_id</tt>.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: <a>HId_t</a> </tt></i> File or group
--   identifier</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Absolute or relative name
--   of the new group</li>
--   <li><i><tt> lcpl_id :: <a>HId_t</a> </tt></i> Property list for link
--   creation</li>
--   <li><i><tt> gcpl_id :: <a>HId_t</a> </tt></i> Property list for group
--   creation</li>
--   <li><i><tt> gapl_id :: <a>HId_t</a> </tt></i> Property list for group
--   access</li>
--   </ul>
--   
--   On success, returns the object ID of a new, empty group open for
--   writing. Call <a>h5g_close</a> when finished with the group. Returns a
--   negative value on failure.
--   
--   <pre>
--   hid_t H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id,
--       hid_t gcpl_id, hid_t gapl_id);
--   </pre>
p'H5G_info_t'storage_type :: Ptr H5G_info_t -> Ptr H5G_storage_type_t
p'H5G_info_t'nlinks :: Ptr H5G_info_t -> Ptr HSize_t
p'H5G_info_t'max_corder :: Ptr H5G_info_t -> Ptr Int64
p'H5G_info_t'mounted :: Ptr H5G_info_t -> Ptr HBool_t
h5g_create2 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Gcreate2 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Creates a new group relative to <tt>loc_id</tt>, giving it the
--   specified creation property list <tt>gcpl_id</tt> and access property
--   list <tt>gapl_id</tt>.
--   
--   The resulting ID should be linked into the file with <a>h5o_link</a>
--   or it will be deleted when closed.
--   
--   Given the default setting, <a>h5g_create_anon</a> followed by
--   <a>h5o_link</a> will have the same function as <a>h5g_create2</a>.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: <a>HId_t</a> </tt></i> File or group
--   identifier</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Absolute or relative name
--   of the new group</li>
--   <li><i><tt> gcpl_id :: <a>HId_t</a> </tt></i> Property list for group
--   creation</li>
--   <li><i><tt> gapl_id :: <a>HId_t</a> </tt></i> Property list for group
--   access</li>
--   </ul>
--   
--   Example: To create missing groups "A" and "B01" along the given path
--   "<i>A</i>B01/grp" (TODO: translate to Haskell):
--   
--   <pre>
--   hid_t create_id = H5Pcreate(H5P_GROUP_CREATE);
--   int   status = H5Pset_create_intermediate_group(create_id, TRUE);
--   hid_t gid = H5Gcreate_anon(file_id, "/A/B01/grp", create_id, H5P_DEFAULT);
--   </pre>
--   
--   On success, returns the object ID of a new, empty group open for
--   writing. Call <a>h5g_close</a> when finished with the group. On
--   failure, returns a negative value.
--   
--   <pre>
--   hid_t H5Gcreate_anon(hid_t loc_id, hid_t gcpl_id, hid_t gapl_id);
--   </pre>
h5g_create_anon :: HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Gcreate_anon :: FunPtr (HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Opens an existing group for modification. When finished, call
--   <a>h5g_close</a> to close it and release resources.
--   
--   This function allows the user the pass in a Group Access Property
--   List, which <a>h5g_open1</a> does not.
--   
--   On success, returns the object ID of the group. On failure, returns a
--   negative value.
--   
--   <pre>
--   hid_t H5Gopen2(hid_t loc_id, const char *name, hid_t gapl_id);
--   </pre>
h5g_open2 :: HId_t -> CString -> HId_t -> IO HId_t
p_H5Gopen2 :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

-- | Returns a copy of the group creation property list.
--   
--   On success, returns the ID for a copy of the group creation property
--   list. The property list ID should be released by calling
--   <tt>h5p_close</tt>.
--   
--   <pre>
--   hid_t H5Gget_create_plist(hid_t group_id);
--   </pre>
h5g_get_create_plist :: HId_t -> IO HId_t
p_H5Gget_create_plist :: FunPtr (HId_t -> IO HId_t)

-- | Retrieve information about a group.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Gget_info(hid_t loc_id, H5G_info_t *ginfo);
--   </pre>
h5g_get_info :: HId_t -> Out H5G_info_t -> IO HErr_t
p_H5Gget_info :: FunPtr (HId_t -> Out H5G_info_t -> IO HErr_t)

-- | Retrieve information about a group.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Gget_info_by_name(hid_t loc_id, const char *name, H5G_info_t *ginfo,
--       hid_t lapl_id);
--   </pre>
h5g_get_info_by_name :: HId_t -> CString -> Out H5G_info_t -> HId_t -> IO HErr_t
p_H5Gget_info_by_name :: FunPtr (HId_t -> CString -> Out H5G_info_t -> HId_t -> IO HErr_t)

-- | Retrieve information about a group, according to the order of an
--   index.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Gget_info_by_idx(hid_t loc_id, const char *group_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5G_info_t *ginfo,
--       hid_t lapl_id);
--   </pre>
h5g_get_info_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5G_info_t -> HId_t -> IO HErr_t
p_H5Gget_info_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5G_info_t -> HId_t -> IO HErr_t)

-- | Closes the specified group. The group ID will no longer be valid for
--   accessing the group.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Gclose(hid_t group_id);
--   </pre>
h5g_close :: HId_t -> IO HErr_t
p_H5Gclose :: FunPtr (HId_t -> IO HErr_t)
h5g_flush :: HId_t -> IO HErr_t
p_H5Gflush :: FunPtr (HId_t -> IO HErr_t)
h5g_refresh :: HId_t -> IO HErr_t
p_H5Grefresh :: FunPtr (HId_t -> IO HErr_t)
h5g_SAME_LOC :: Num a => a
h5g_LINK_ERROR :: H5L_type_t
h5g_LINK_HARD :: H5L_type_t
type H5G_link_t = H5L_type_t
h5g_LINK_SOFT :: H5L_type_t
h5g_NTYPES :: Num a => a
h5g_NLIBTYPES :: Num a => a
h5g_NUSERTYPES :: Num a => a
h5g_USERTYPE :: H5G_obj_t -> H5G_obj_t

-- | An object has a certain type. The first few numbers are reserved for
--   use internally by HDF5. Users may add their own types with higher
--   values. The values are never stored in the file - they only exist
--   while an application is running. An object may satisfy the
--   <tt>isa</tt> function for more than one type.
newtype H5G_obj_t
H5G_obj_t :: Int32 -> H5G_obj_t

-- | Unknown object type
h5g_UNKNOWN :: H5G_obj_t

-- | Object is a group
h5g_GROUP :: H5G_obj_t

-- | Object is a dataset
h5g_DATASET :: H5G_obj_t

-- | Object is a named data type
h5g_TYPE :: H5G_obj_t

-- | Object is a symbolic link
h5g_LINK :: H5G_obj_t

-- | Object is a user-defined link
h5g_UDLINK :: H5G_obj_t

-- | Reserved for future use
h5g_RESERVED_5 :: H5G_obj_t

-- | Reserved for future use
h5g_RESERVED_6 :: H5G_obj_t

-- | Reserved for future use
h5g_RESERVED_7 :: H5G_obj_t

-- | Type of <a>h5g_iterate</a> operator
--   
--   <pre>
--   typedef herr_t (*H5G_iterate_t)(hid_t group, const char *name, void *op_data);
--   </pre>
type H5G_iterate_t a = FunPtr HId_t -> CString -> InOut a -> IO HErr_t

-- | Information about an object
--   
--   file number
--   
--   object number
--   
--   number of hard links to object
--   
--   basic object type
--   
--   modification time
--   
--   symbolic link value length
--   
--   Object header information
data H5G_stat_t
H5G_stat_t :: [CULong] -> [CULong] -> CUInt -> H5G_obj_t -> CTime -> CSize -> H5O_stat_t -> H5G_stat_t
[h5g_stat_t'fileno] :: H5G_stat_t -> [CULong]
[h5g_stat_t'objno] :: H5G_stat_t -> [CULong]
[h5g_stat_t'nlink] :: H5G_stat_t -> CUInt
[h5g_stat_t'type] :: H5G_stat_t -> H5G_obj_t
[h5g_stat_t'mtime] :: H5G_stat_t -> CTime
[h5g_stat_t'linklen] :: H5G_stat_t -> CSize
[h5g_stat_t'ohdr] :: H5G_stat_t -> H5O_stat_t

-- | Creates a new group relative to <tt>loc_id</tt> and gives it the
--   specified <tt>name</tt>. The group is opened for write access and it's
--   object ID is returned.
--   
--   The optional <tt>size_hint</tt> specifies how much file space to
--   reserve to store the names that will appear in this group. If a
--   non-positive value is supplied for the <tt>size_hint</tt> then a
--   default size is chosen.
--   
--   Note: Deprecated in favor of <a>h5g_create2</a>
--   
--   On success, returns the object ID of a new, empty group open for
--   writing. Call <a>h5g_close</a> when finished with the group. On
--   failure, returns a negative value.
--   
--   <pre>
--   hid_t H5Gcreate1(hid_t loc_id, const char *name, size_t size_hint);
--   </pre>
p'H5G_stat_t'fileno :: Ptr H5G_stat_t -> Ptr CULong
p'H5G_stat_t'objno :: Ptr H5G_stat_t -> Ptr CULong
p'H5G_stat_t'nlink :: Ptr H5G_stat_t -> Ptr CUInt
p'H5G_stat_t'type :: Ptr H5G_stat_t -> Ptr H5G_obj_t
p'H5G_stat_t'mtime :: Ptr H5G_stat_t -> Ptr CTime
p'H5G_stat_t'linklen :: Ptr H5G_stat_t -> Ptr CSize
h5g_create1 :: HId_t -> CString -> CSize -> IO HId_t

-- | Opens an existing group for modification. When finished, call
--   <a>h5g_close</a> to close it and release resources.
--   
--   Note: Deprecated in favor of <a>h5g_open2</a>
--   
--   On success, returns the Object ID of the group. On failure, returns a
--   negative value.
--   
--   <pre>
--   hid_t H5Gopen1(hid_t loc_id, const char *name);
--   </pre>
p'H5G_stat_t'ohdr :: Ptr H5G_stat_t -> Ptr H5O_stat_t
p_H5Gcreate1 :: FunPtr (HId_t -> CString -> CSize -> IO HId_t)
h5g_open1 :: HId_t -> CString -> IO HId_t
p_H5Gopen1 :: FunPtr (HId_t -> CString -> IO HId_t)

-- | Creates a link between two existing objects. The new APIs to do this
--   are <a>h5l_create_hard</a> and <a>h5l_create_soft</a>.
--   
--   <pre>
--   herr_t H5Glink(hid_t cur_loc_id, H5G_link_t type, const char *cur_name,
--       const char *new_name);
--   </pre>
h5g_link :: HId_t -> H5L_type_t -> CString -> CString -> IO HErr_t
p_H5Glink :: FunPtr (HId_t -> H5L_type_t -> CString -> CString -> IO HErr_t)

-- | Creates a link between two existing objects. The new APIs to do this
--   are <a>h5l_create_hard</a> and <a>h5l_create_soft</a>.
--   
--   herr_t H5Glink2(hid_t cur_loc_id, const char *cur_name, H5G_link_t
--   type, hid_t new_loc_id, const char *new_name);
h5g_link2 :: HId_t -> CString -> H5L_type_t -> HId_t -> CString -> IO HErr_t
p_H5Glink2 :: FunPtr (HId_t -> CString -> H5L_type_t -> HId_t -> CString -> IO HErr_t)

-- | Moves and renames a link. The new API to do this is <a>h5l_move</a>.
--   
--   <pre>
--   herr_t H5Gmove(hid_t src_loc_id, const char *src_name,
--       const char *dst_name);
--   </pre>
h5g_move :: HId_t -> CString -> CString -> IO HErr_t
p_H5Gmove :: FunPtr (HId_t -> CString -> CString -> IO HErr_t)

-- | Moves and renames a link. The new API to do this is <a>h5l_move</a>.
--   
--   <pre>
--   herr_t H5Gmove2(hid_t src_loc_id, const char *src_name, hid_t dst_loc_id,
--       const char *dst_name);
--   </pre>
h5g_move2 :: HId_t -> CString -> HId_t -> CString -> IO HErr_t
p_H5Gmove2 :: FunPtr (HId_t -> CString -> HId_t -> CString -> IO HErr_t)

-- | Removes a link. The new API is <a>h5l_delete</a> /
--   <a>h5l_delete_by_idx</a>.
--   
--   <pre>
--   herr_t H5Gunlink(hid_t loc_id, const char *name);
--   </pre>
h5g_unlink :: HId_t -> CString -> IO HErr_t
p_H5Gunlink :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Retrieve's a soft link's data. The new API is <a>h5l_get_val</a> /
--   <a>h5l_get_val_by_idx</a>.
--   
--   <pre>
--   herr_t H5Gget_linkval(hid_t loc_id, const char *name, size_t size,
--       char *buf/*out*/);
--   </pre>
h5g_get_linkval :: HId_t -> CString -> CSize -> OutArray a -> IO HErr_t
p_H5Gget_linkval :: FunPtr (HId_t -> CString -> CSize -> OutArray a -> IO HErr_t)

-- | Gives the specified object a comment. The <tt>comment</tt> string
--   should be a null terminated string. An object can have only one
--   comment at a time. Passing <a>nullPtr</a> for the <tt>comment</tt>
--   argument will remove the comment property from the object.
--   
--   Note: Deprecated in favor of <a>h5o_set_comment</a> /
--   <a>h5o_set_comment_by_name</a>
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Gset_comment(hid_t loc_id, const char *name, const char *comment);
--   </pre>
h5g_set_comment :: HId_t -> CString -> CString -> IO HErr_t
p_H5Gset_comment :: FunPtr (HId_t -> CString -> CString -> IO HErr_t)

-- | Return at most <tt>bufsize</tt> characters of the comment for the
--   specified object. If <tt>bufsize</tt> is large enough to hold the
--   entire comment then the comment string will be null terminated,
--   otherwise it will not. If the object does not have a comment value
--   then no bytes are copied to the BUF buffer.
--   
--   Note: Deprecated in favor of <a>h5o_get_comment</a> /
--   <a>h5o_get_comment_by_name</a>
--   
--   On success, returns the number of characters in the comment counting
--   the null terminator. The value returned may be larger than the
--   <tt>bufsize</tt> argument.
--   
--   <pre>
--   int H5Gget_comment(hid_t loc_id, const char *name, size_t bufsize,
--       char *buf);
--   </pre>
h5g_get_comment :: HId_t -> CString -> CSize -> OutArray CChar -> IO CInt
p_H5Gget_comment :: FunPtr (HId_t -> CString -> CSize -> OutArray CChar -> IO CInt)

-- | Iterates over the entries of a group. The <tt>loc_id</tt> and
--   <tt>name</tt> identify the group over which to iterate and
--   <tt>idx</tt> indicates where to start iterating (zero means at the
--   beginning). The <tt>operator</tt> is called for each member and the
--   iteration continues until the operator returns non-zero or all members
--   are processed. The operator is passed a group ID for the group being
--   iterated, a member name, and <tt>op_data</tt> for each member.
--   
--   Note: Deprecated in favor of <a>h5l_iterate</a>
--   
--   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.
--   
--   <pre>
--   herr_t H5Giterate(hid_t loc_id, const char *name, int *idx,
--           H5G_iterate_t op, void *op_data);
--   </pre>
h5g_iterate :: HId_t -> CString -> InOut CInt -> H5G_iterate_t a -> InOut a -> IO HErr_t
p_H5Giterate :: FunPtr (HId_t -> CString -> InOut CInt -> H5G_iterate_t a -> InOut a -> IO HErr_t)

-- | Returns the number of objects in the group. It iterates all B-tree
--   leaves and sum up total number of group members.
--   
--   Note: Deprecated in favor of <a>h5g_get_info</a>
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Gget_num_objs(hid_t loc_id, hsize_t *num_objs);
--   </pre>
h5g_get_num_objs :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Gget_num_objs :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | Returns information about an object. If <tt>follow_link</tt> is
--   non-zero then all symbolic links are followed; otherwise all links
--   except the last component of the name are followed.
--   
--   Note: Deprecated in favor of <a>h5l_get_info</a> / <a>h5o_get_info</a>
--   
--   Returns non-negative on success, with the fields of <tt>statbuf</tt>
--   (if non-null) initialized. Negative on failure.
--   
--   <pre>
--   herr_t H5Gget_objinfo(hid_t loc_id, const char *name,
--       hbool_t follow_link, H5G_stat_t *statbuf/*out*/);
--   </pre>
h5g_get_objinfo :: HId_t -> CString -> HBool_t -> Out H5G_stat_t -> IO HErr_t
p_H5Gget_objinfo :: FunPtr (HId_t -> CString -> HBool_t -> Out H5G_stat_t -> IO HErr_t)

-- | Returns the name of objects in the group by giving index. If
--   <tt>name</tt> is non-NULL then write up to <tt>size</tt> bytes into
--   that buffer and always return the length of the entry name. Otherwise
--   <tt>size</tt> is ignored and the function does not store the name,
--   just returning the number of characters required to store the name. If
--   an error occurs then the buffer pointed to by <tt>name</tt> (NULL or
--   non-NULL) is unchanged and the function returns a negative value. If a
--   zero is returned for the name's length, then there is no name
--   associated with the ID.
--   
--   Note: Deprecated in favor of <a>h5l_get_name_by_idx</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   ssize_t H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char* name,
--       size_t size);
--   </pre>
h5g_get_objname_by_idx :: HId_t -> HSize_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Gget_objname_by_idx :: FunPtr (HId_t -> HSize_t -> OutArray CChar -> CSize -> IO CSSize)

-- | Returns the type of objects in the group by giving index.
--   
--   Note: Deprecated in favor of <a>h5l_get_info</a> / <a>h5o_get_info</a>
--   
--   Returns <a>h5g_GROUP</a>, <a>h5g_DATASET</a>, or <a>h5g_TYPE</a> on
--   success, or <a>h5g_UNKNOWN</a> on failure.
--   
--   <pre>
--   H5G_obj_t H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx);
--   </pre>
h5g_get_objtype_by_idx :: HId_t -> HSize_t -> IO H5G_obj_t
p_H5Gget_objtype_by_idx :: FunPtr (HId_t -> HSize_t -> IO H5G_obj_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5G.H5G_info_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5G.H5G_obj_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5G.H5G_stat_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5G.H5G_storage_type_t
instance GHC.Classes.Ord Bindings.HDF5.Raw.H5G.H5G_storage_type_t
instance GHC.Internal.Read.Read Bindings.HDF5.Raw.H5G.H5G_storage_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5G.H5G_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5G.H5G_obj_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5G.H5G_stat_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5G.H5G_storage_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5G.H5G_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5G.H5G_obj_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5G.H5G_stat_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5G.H5G_storage_type_t

module Bindings.HDF5.Raw.H5R

-- | Reference types allowed
newtype H5R_type_t
H5R_type_t :: Int32 -> H5R_type_t

-- | invalid Reference Type
h5r_BADTYPE :: H5R_type_t

-- | Object reference
h5r_OBJECT :: H5R_type_t

-- | Dataset Region Reference
h5r_DATASET_REGION :: H5R_type_t

-- | Number of reference types
h5r_MAXTYPE :: Num a => a
h5r_OBJ_REF_BUF_SIZE :: CSize
newtype HObj_ref_t
HObj_ref_t :: Word64 -> HObj_ref_t
h5r_DSET_REG_REF_BUF_SIZE :: CSize

-- | Buffer to store heap ID and index
--   
--   <pre>
--   typedef unsigned char hdset_reg_ref_t[H5R_DSET_REG_REF_BUF_SIZE];
--   </pre>
newtype HDset_reg_ref_t
HDset_reg_ref_t :: ByteString -> HDset_reg_ref_t

-- | Creates a particular type of reference specified with
--   <tt>ref_type</tt>, in the space pointed to by <tt>ref</tt>. The
--   <tt>loc_id</tt> and <tt>name</tt> are used to locate the object
--   pointed to and the <tt>space_id</tt> is used to choose the region
--   pointed to (for Dataset Region references).
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> ref :: <a>Out</a> a </tt></i> Reference created</li>
--   <li><i><tt> loc_id :: <a>HId_t</a> </tt></i> Location ID used to
--   locate object pointed to</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of object at
--   location LOC_ID of object pointed to</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of reference
--   to create</li>
--   <li><i><tt> space_id :: <a>HId_t</a> </tt></i> Dataspace ID with
--   selection, used for Dataset Region references.</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Rcreate(void *ref, hid_t loc_id, const char *name,
--          H5R_type_t ref_type, hid_t space_id);
--   </pre>
h5r_create :: Out a -> HId_t -> CString -> H5R_type_t -> HId_t -> IO HErr_t
p_H5Rcreate :: FunPtr (Out a -> HId_t -> CString -> H5R_type_t -> HId_t -> IO HErr_t)

-- | Retrieves a dataspace with the region pointed to selected. Given a
--   reference to some object, creates a copy of the dataset pointed to's
--   dataspace and defines a selection in the copy which is the region
--   pointed to.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> Dataset reference object is
--   in or location ID of object that the dataset is located within.</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of reference
--   to get region of</li>
--   <li><i><tt> ref :: <a>In</a> a </tt></i> Reference to open.</li>
--   </ul>
--   
--   Returns a valid ID on success, negative on failure.
--   
--   <pre>
--   hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, const void *ref);
--   </pre>
h5r_get_region :: HId_t -> H5R_type_t -> In a -> IO HId_t
p_H5Rget_region :: FunPtr (HId_t -> H5R_type_t -> In a -> IO HId_t)

-- | Given a reference to some object, this function retrieves the type of
--   object pointed to.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> Dataset reference object is
--   in or location ID of object that the dataset is located within.</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of reference
--   to query</li>
--   <li><i><tt> ref :: <a>In</a> a </tt></i> Reference to query.</li>
--   <li><i><tt> obj_type :: <a>Out</a> <a>H5O_type_t</a> </tt></i> Type of
--   object reference points to</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Rget_obj_type2(hid_t id, H5R_type_t ref_type, const void *_ref,
--       H5O_type_t *obj_type);
--   </pre>
h5r_get_obj_type2 :: HId_t -> H5R_type_t -> In a -> Out H5O_type_t -> IO HErr_t
p_H5Rget_obj_type2 :: FunPtr (HId_t -> H5R_type_t -> In a -> Out H5O_type_t -> IO HErr_t)

-- | Given a reference to some object, determine a path to the object
--   referenced in the file.
--   
--   Note: This may not be the only path to that object.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: <a>HId_t</a> </tt></i> Dataset reference object
--   is in or location ID of object that the dataset is located
--   within.</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of
--   reference</li>
--   <li><i><tt> ref :: <a>In</a> a </tt></i> Reference to query.</li>
--   <li><i><tt> name :: <a>Out</a> <a>CChar</a> </tt></i> Buffer to place
--   name of object referenced</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> Size of name buffer</li>
--   </ul>
--   
--   Returns non-negative length of the path on success, Negative on
--   failure
--   
--   <pre>
--   ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, const void *ref,
--       char *name/*out*/, size_t size);
--   </pre>
h5r_get_name :: HId_t -> H5R_type_t -> In a -> OutArray CChar -> CSize -> IO CSSize
p_H5Rget_name :: FunPtr (HId_t -> H5R_type_t -> In a -> OutArray CChar -> CSize -> IO CSSize)

-- | Opens the HDF5 object referenced. Given a reference to some object,
--   open that object and return an ID for that object.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> Dataset reference object is
--   in or location ID of object that the dataset is located within.</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of reference
--   to create</li>
--   <li><i><tt> ref :: <a>In</a> a </tt></i> Reference to open.</li>
--   </ul>
--   
--   Returns a valid ID on success, negative on failure
--   
--   <pre>
--   hid_t H5Rdereference(hid_t dataset, H5R_type_t ref_type, const void *ref);
--   </pre>
h5r_dereference1 :: HId_t -> H5R_type_t -> In a -> IO HId_t
h5r_dereference2 :: HId_t -> HId_t -> H5R_type_t -> In a -> IO HId_t
p_H5Rdereference1 :: FunPtr (HId_t -> H5R_type_t -> In a -> IO HId_t)
p_H5Rdereference2 :: FunPtr (HId_t -> HId_t -> H5R_type_t -> In a -> IO HId_t)
h5r_dereference :: HId_t -> H5R_type_t -> In a -> IO HId_t

-- | Retrieves the type of object that an object reference points to Given
--   a reference to some object, this function returns the type of object
--   pointed to.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> Dataset reference object is
--   in or location ID of object that the dataset is located within.</li>
--   <li><i><tt> ref_type :: <a>H5R_type_t</a> </tt></i> Type of reference
--   to query</li>
--   <li><i><tt> ref :: <a>In</a> a </tt></i> Reference to query.</li>
--   </ul>
--   
--   On success, returns an object type defined in
--   <a>Bindings.HDF5.Raw.H5G</a> On failure, returns <a>h5g_UNKNOWN</a>
--   
--   <pre>
--   H5G_obj_t H5Rget_obj_type1(hid_t id, H5R_type_t ref_type, const void *_ref);
--   </pre>
h5r_get_obj_type1 :: HId_t -> H5R_type_t -> In a -> IO H5G_obj_t
p_H5Rget_obj_type1 :: FunPtr (HId_t -> H5R_type_t -> In a -> IO H5G_obj_t)
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5R.H5R_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5R.HObj_ref_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5R.H5R_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5R.HObj_ref_t

module Bindings.HDF5.Raw.H5FD.StdIO
h5fd_STDIO :: HId_t

-- | Initialize this driver by registering the driver with the library.
--   
--   <pre>
--   hid_t H5FD_stdio_init(void);
--   </pre>
h5fd_stdio_init :: IO HId_t
p_H5FD_stdio_init :: FunPtr (IO HId_t)

-- | Modify the file access property list to use the H5FD_STDIO driver.
--   There are no driver-specific properties.
--   
--   herr_t H5Pset_fapl_stdio(hid_t fapl_id);
h5p_set_fapl_stdio :: HId_t -> IO HErr_t
p_H5Pset_fapl_stdio :: FunPtr (HId_t -> IO HErr_t)


-- | The POSIX unbuffered file driver using only the HDF5 public API and
--   with a few optimizations: the lseek() call is made only when the
--   current file position is unknown or needs to be changed based on
--   previous I/O through this driver (don't mix I<i>O from this driver
--   with I</i>O from other parts of the application to the same file).
module Bindings.HDF5.Raw.H5FD.Sec2
h5fd_SEC2 :: HId_t

-- | Initialize this driver by registering the driver with the library.
--   
--   <pre>
--   hid_t H5FD_sec2_init(void);
--   </pre>
h5fd_sec2_init :: IO HId_t
p_H5FD_sec2_init :: FunPtr (IO HId_t)

-- | Modify the file access property list to use the H5FD_SEC2 driver.
--   There are no driver-specific properties.
--   
--   <pre>
--   herr_t H5Pset_fapl_sec2(hid_t fapl_id);
--   </pre>
h5p_set_fapl_sec2 :: HId_t -> IO HErr_t
p_H5Pset_fapl_sec2 :: FunPtr (HId_t -> IO HErr_t)


-- | The POSIX unbuffered file driver using only the HDF5 public API and
--   with a few optimizations: the lseek() call is made only when the
--   current file position is unknown or needs to be changed based on
--   previous I/O through this driver (don't mix I<i>O from this driver
--   with I</i>O from other parts of the application to the same file).
--   With custom modifications...
module Bindings.HDF5.Raw.H5FD.Log
h5fd_LOG :: HId_t
h5fd_LOG_LOC_READ :: Num a => a
h5fd_LOG_LOC_WRITE :: Num a => a
h5fd_LOG_LOC_SEEK :: Num a => a
h5fd_LOG_LOC_IO :: Num a => a
h5fd_LOG_FILE_READ :: Num a => a
h5fd_LOG_FILE_WRITE :: Num a => a
h5fd_LOG_FILE_IO :: Num a => a
h5fd_LOG_FLAVOR :: Num a => a
h5fd_LOG_NUM_READ :: Num a => a
h5fd_LOG_NUM_WRITE :: Num a => a
h5fd_LOG_NUM_SEEK :: Num a => a
h5fd_LOG_NUM_IO :: Num a => a
h5fd_LOG_TIME_OPEN :: Num a => a
h5fd_LOG_TIME_READ :: Num a => a
h5fd_LOG_TIME_WRITE :: Num a => a
h5fd_LOG_TIME_SEEK :: Num a => a
h5fd_LOG_TIME_CLOSE :: Num a => a
h5fd_LOG_TIME_IO :: Num a => a
h5fd_LOG_ALLOC :: Num a => a
h5fd_LOG_ALL :: Num a => a

-- | Initialize this driver by registering the driver with the library.
--   
--   <pre>
--   hid_t H5FD_log_init(void);
--   </pre>
h5fd_log_init :: IO HId_t
p_H5FD_log_init :: FunPtr (IO HId_t)

-- | Modify the file access property list to use the H5FD_LOG driver. There
--   are no driver-specific properties.
--   
--   <pre>
--   herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned flags, size_t buf_size);
--   </pre>
h5p_set_fapl_log :: HId_t -> CString -> CUInt -> CSize -> IO HErr_t
p_H5Pset_fapl_log :: FunPtr (HId_t -> CString -> CUInt -> CSize -> IO HErr_t)


-- | Implements a family of files that acts as a single hdf5 file. The
--   purpose is to be able to split a huge file on a 64-bit platform,
--   transfer all the &lt;2GB members to a 32-bit platform, and then access
--   the entire huge file on the 32-bit platform.
--   
--   All family members are logically the same size although their physical
--   sizes may vary. The logical member size is determined by looking at
--   the physical size of the first member when the file is opened. When
--   creating a file family, the first member is created with a predefined
--   physical size (actually, this happens when the file family is flushed,
--   and can be quite time consuming on file systems that don't implement
--   holes, like nfs).
module Bindings.HDF5.Raw.H5FD.Family
h5fd_FAMILY :: HId_t

-- | Initialize this driver by registering the driver with the library.
--   
--   <pre>
--   hid_t H5FD_family_init(void);
--   </pre>
h5fd_family_init :: IO HId_t
p_H5FD_family_init :: FunPtr (IO HId_t)

-- | Sets the file access property list <tt>fapl_id</tt> to use the family
--   driver. The <tt>memb_size</tt> is the size in bytes of each file
--   member (used only when creating a new file) and the
--   <tt>memb_fapl_id</tt> is a file access property list to be used for
--   each family member.
--   
--   <pre>
--   herr_t H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size,
--          hid_t memb_fapl_id);
--   </pre>
h5p_set_fapl_family :: HId_t -> HSize_t -> HId_t -> IO HErr_t
p_H5Pset_fapl_family :: FunPtr (HId_t -> HSize_t -> HId_t -> IO HErr_t)

-- | Returns information about the family file access property list though
--   the function arguments.
--   
--   <pre>
--   herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/,
--          hid_t *memb_fapl_id/*out*/);
--   </pre>
h5p_get_fapl_family :: HId_t -> Out HSize_t -> Out HId_t -> IO HErr_t
p_H5Pget_fapl_family :: FunPtr (HId_t -> Out HSize_t -> Out HId_t -> IO HErr_t)


-- | A driver which stores the HDF5 data in main memory using only the HDF5
--   public API. This driver is useful for fast access to small, temporary
--   hdf5 files.
module Bindings.HDF5.Raw.H5FD.Core
h5fd_CORE :: HId_t

-- | Initialize this driver by registering the driver with the library.
--   
--   <pre>
--   hid_t H5FD_core_init(void);x
--   </pre>
h5fd_core_init :: IO HId_t
p_H5FD_core_init :: FunPtr (IO HId_t)

-- | Modify the file access property list to use the H5FD_CORE driver. The
--   <tt>increment</tt> specifies how much to grow the memory each time we
--   need more.
--   
--   <pre>
--   herr_t H5Pset_fapl_core(hid_t fapl_id, size_t increment,
--          hbool_t backing_store);
--   </pre>
h5p_set_fapl_core :: HId_t -> CSize -> HBool_t -> IO HErr_t
p_H5Pset_fapl_core :: FunPtr (HId_t -> CSize -> HBool_t -> IO HErr_t)

-- | Queries properties set by the H5Pset_fapl_core() function.
--   
--   <pre>
--   herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
--          hbool_t *backing_store/*out*/);
--   </pre>
h5p_get_fapl_core :: HId_t -> Out CSize -> Out HBool_t -> IO HErr_t
p_H5Pget_fapl_core :: FunPtr (HId_t -> Out CSize -> Out HBool_t -> IO HErr_t)

module Bindings.HDF5.Raw.H5E

-- | Value for the default error stack
h5e_DEFAULT :: HId_t

-- | Different kinds of error information
newtype H5E_type_t
H5E_type_t :: Word32 -> H5E_type_t
h5e_MAJOR :: H5E_type_t
h5e_MINOR :: H5E_type_t

-- | Information about an error; element of error stack
--   
--   class ID
--   
--   major error ID
--   
--   minor error number
--   
--   line in file where error occurs
--   
--   function in which error occurred
--   
--   file in which error occurred
--   
--   optional supplied description
data H5E_error2_t
H5E_error2_t :: HId_t -> HId_t -> HId_t -> CUInt -> CString -> CString -> CString -> H5E_error2_t
[h5e_error2_t'cls_id] :: H5E_error2_t -> HId_t
[h5e_error2_t'maj_num] :: H5E_error2_t -> HId_t
[h5e_error2_t'min_num] :: H5E_error2_t -> HId_t
[h5e_error2_t'line] :: H5E_error2_t -> CUInt
[h5e_error2_t'func_name] :: H5E_error2_t -> CString
[h5e_error2_t'file_name] :: H5E_error2_t -> CString
[h5e_error2_t'desc] :: H5E_error2_t -> CString

-- | HDF5 error class
h5e_ERR_CLS :: HId_t

-- | Dataset
h5e_DATASET :: HId_t

-- | Function entry/exit
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
h5e_FUNC :: HId_t

-- | Data storage
p'H5E_error2_t'min_num :: Ptr H5E_error2_t -> Ptr HId_t
h5e_STORAGE :: HId_t

-- | File accessibility
p'H5E_error2_t'line :: Ptr H5E_error2_t -> Ptr CUInt
p'H5E_error2_t'func_name :: Ptr H5E_error2_t -> Ptr CString
h5e_FILE :: HId_t

-- | Shared Object Header Messages
p'H5E_error2_t'file_name :: Ptr H5E_error2_t -> Ptr CString
h5e_SOHM :: HId_t

-- | Symbol table
p'H5E_error2_t'desc :: Ptr H5E_error2_t -> Ptr CString
h5e_SYM :: HId_t

-- | Plugin for dynamically loaded library
h5e_PLUGIN :: HId_t

-- | Virtual File Layer
h5e_VFL :: HId_t

-- | Internal error (too specific to document in detail)
h5e_INTERNAL :: HId_t

-- | B-Tree node
h5e_BTREE :: HId_t

-- | References
h5e_REFERENCE :: HId_t

-- | Dataspace
h5e_DATASPACE :: HId_t

-- | Resource unavailable
h5e_RESOURCE :: HId_t

-- | Property lists
h5e_PLIST :: HId_t

-- | Links
h5e_LINK :: HId_t

-- | Datatype
h5e_DATATYPE :: HId_t

-- | Reference Counted Strings
h5e_RS :: HId_t

-- | Heap
h5e_HEAP :: HId_t

-- | Object header
h5e_OHDR :: HId_t

-- | Attribute
h5e_ATTR :: HId_t

-- | No error
h5e_NONE_MAJOR :: HId_t

-- | Low-level I/O
h5e_IO :: HId_t

-- | Skip Lists
h5e_SLIST :: HId_t

-- | External file list
h5e_EFL :: HId_t

-- | Ternary Search Trees
h5e_TST :: HId_t

-- | Invalid arguments to routine
h5e_ARGS :: HId_t

-- | Error API
h5e_ERROR :: HId_t

-- | Data filters
h5e_PLINE :: HId_t

-- | Free Space Manager
h5e_FSPACE :: HId_t

-- | Object cache
h5e_CACHE :: HId_t

-- | Seek failed
h5e_SEEKERROR :: HId_t

-- | Read failed
h5e_READERROR :: HId_t

-- | Write failed
h5e_WRITEERROR :: HId_t

-- | Close failed
h5e_CLOSEERROR :: HId_t

-- | Address overflowed
h5e_OVERFLOW :: HId_t

-- | File control (fcntl) failed
h5e_FCNTL :: HId_t

-- | No space available for allocation
h5e_NOSPACE :: HId_t

-- | Can't allocate space
h5e_CANTALLOC :: HId_t

-- | Unable to copy object
h5e_CANTCOPY :: HId_t

-- | Unable to free object
h5e_CANTFREE :: HId_t

-- | Object already exists
h5e_ALREADYEXISTS :: HId_t

-- | Unable to lock object
h5e_CANTLOCK :: HId_t

-- | Unable to unlock object
h5e_CANTUNLOCK :: HId_t

-- | Unable to garbage collect
h5e_CANTGC :: HId_t

-- | Unable to compute size
h5e_CANTGETSIZE :: HId_t

-- | Object is already open
h5e_OBJOPEN :: HId_t
h5e_CANTRESTORE :: HId_t
h5e_CANTCOMPUTE :: HId_t
h5e_CANTEXTEND :: HId_t
h5e_CANTATTACH :: HId_t
h5e_CANTUPDATE :: HId_t
h5e_CANTOPERATE :: HId_t
h5e_CANTINIT :: HId_t
h5e_ALREADYINIT :: HId_t
h5e_CANTRELEASE :: HId_t
h5e_CANTGET :: HId_t
h5e_CANTSET :: HId_t
h5e_DUPCLASS :: HId_t
h5e_SETDISALLOWED :: HId_t
h5e_CANTMERGE :: HId_t
h5e_CANTREVIVE :: HId_t
h5e_CANTSHRINK :: HId_t
h5e_LINKCOUNT :: HId_t
h5e_VERSION :: HId_t
h5e_ALIGNMENT :: HId_t
h5e_BADMESG :: HId_t
h5e_CANTDELETE :: HId_t
h5e_BADITER :: HId_t
h5e_CANTPACK :: HId_t
h5e_CANTRESET :: HId_t
h5e_CANTRENAME :: HId_t
h5e_SYSERRSTR :: HId_t
h5e_NOFILTER :: HId_t
h5e_CALLBACK :: HId_t
h5e_CANAPPLY :: HId_t
h5e_SETLOCAL :: HId_t
h5e_NOENCODER :: HId_t
h5e_CANTFILTER :: HId_t
h5e_CANTOPENOBJ :: HId_t
h5e_CANTCLOSEOBJ :: HId_t
h5e_COMPLEN :: HId_t
h5e_PATH :: HId_t
h5e_NONE_MINOR :: HId_t
h5e_OPENERROR :: HId_t
h5e_FILEEXISTS :: HId_t
h5e_FILEOPEN :: HId_t
h5e_CANTCREATE :: HId_t
h5e_CANTOPENFILE :: HId_t
h5e_CANTCLOSEFILE :: HId_t
h5e_NOTHDF5 :: HId_t
h5e_BADFILE :: HId_t
h5e_TRUNCATED :: HId_t
h5e_MOUNT :: HId_t
h5e_BADGROUP :: HId_t
h5e_CANTREGISTER :: HId_t
h5e_CANTINC :: HId_t
h5e_CANTDEC :: HId_t
h5e_NOIDS :: HId_t
h5e_CANTFLUSH :: HId_t
h5e_CANTSERIALIZE :: HId_t
h5e_CANTLOAD :: HId_t
h5e_PROTECT :: HId_t
h5e_NOTCACHED :: HId_t
h5e_SYSTEM :: HId_t
h5e_CANTINS :: HId_t
h5e_CANTPROTECT :: HId_t
h5e_CANTUNPROTECT :: HId_t
h5e_CANTPIN :: HId_t
h5e_CANTUNPIN :: HId_t
h5e_CANTMARKDIRTY :: HId_t
h5e_CANTDIRTY :: HId_t
h5e_CANTEXPUNGE :: HId_t
h5e_CANTRESIZE :: HId_t
h5e_TRAVERSE :: HId_t
h5e_NLINKS :: HId_t
h5e_NOTREGISTERED :: HId_t
h5e_CANTMOVE :: HId_t
h5e_CANTSORT :: HId_t
h5e_MPI :: HId_t
h5e_MPIERRSTR :: HId_t
h5e_CANTRECV :: HId_t
h5e_CANTCLIP :: HId_t
h5e_CANTCOUNT :: HId_t
h5e_CANTSELECT :: HId_t
h5e_CANTNEXT :: HId_t
h5e_BADSELECT :: HId_t
h5e_CANTCOMPARE :: HId_t
h5e_UNINITIALIZED :: HId_t
h5e_UNSUPPORTED :: HId_t
h5e_BADTYPE :: HId_t
h5e_BADRANGE :: HId_t
h5e_BADVALUE :: HId_t
h5e_NOTFOUND :: HId_t
h5e_EXISTS :: HId_t
h5e_CANTENCODE :: HId_t
h5e_CANTDECODE :: HId_t
h5e_CANTSPLIT :: HId_t
h5e_CANTREDISTRIBUTE :: HId_t
h5e_CANTSWAP :: HId_t
h5e_CANTINSERT :: HId_t
h5e_CANTLIST :: HId_t
h5e_CANTMODIFY :: HId_t
h5e_CANTREMOVE :: HId_t
h5e_CANTCONVERT :: HId_t
h5e_BADSIZE :: HId_t
newtype H5E_TRY_STATE
H5E_TRY_STATE :: (Either (H5E_auto1_t ()) (H5E_auto2_t ()), InOut ()) -> H5E_TRY_STATE
h5e_BEGIN_TRY :: IO H5E_TRY_STATE
h5e_END_TRY :: H5E_TRY_STATE -> IO HErr_t

-- | 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

-- | Error stack traversal direction
newtype H5E_direction_t
H5E_direction_t :: Word32 -> H5E_direction_t

-- | begin deep, end at API function
h5e_WALK_UPWARD :: H5E_direction_t

-- | begin at API function, end deep
h5e_WALK_DOWNWARD :: H5E_direction_t

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

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

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

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

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

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

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

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

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

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

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

-- | Pushes a new error record onto error stack for the current thread. The
--   error has major and minor IDs <tt>maj_id</tt> and <tt>min_id</tt>, 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.
--   
--   <pre>
--   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, ...);
--   </pre>
--   
--   (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_no_varargs :: HId_t -> CString -> CString -> CUInt -> HId_t -> HId_t -> HId_t -> CString -> IO HErr_t
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
--   
--   <pre>
--   herr_t H5Epop(hid_t err_stack, size_t count);
--   </pre>
h5e_pop :: HId_t -> CSize -> IO HErr_t
p_H5Epop :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Prints the error stack in some default way. This is just a convenience
--   function for <tt>h5e_walk</tt> 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
--   
--   <pre>
--   herr_t H5Eprint2(hid_t err_stack, FILE *stream);
--   </pre>
h5e_print2 :: HId_t -> InOut CFile -> IO HErr_t
p_H5Eprint2 :: FunPtr (HId_t -> InOut CFile -> IO HErr_t)

-- | 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
--   
--   <pre>
--   herr_t H5Ewalk2(hid_t err_stack, H5E_direction_t direction, H5E_walk2_t func,
--       void *client_data);
--   </pre>
h5e_walk2 :: HId_t -> H5E_direction_t -> H5E_walk2_t a -> InOut a -> IO HErr_t
p_H5Ewalk2 :: FunPtr (HId_t -> H5E_direction_t -> H5E_walk2_t a -> InOut a -> IO HErr_t)

-- | 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
--   
--   <pre>
--   herr_t H5Eget_auto2(hid_t estack_id, H5E_auto2_t *func, void **client_data);
--   </pre>
--   
--   NB: the <tt>a</tt> type here should be existentially quantified, not
--   universally, but Haskell doesn't have a convenient way to say so in a
--   foreign import.
h5e_get_auto2 :: HId_t -> Out (H5E_auto2_t a) -> Out (InOut a) -> IO HErr_t
p_H5Eget_auto2 :: FunPtr (HId_t -> Out (H5E_auto2_t a) -> Out (InOut a) -> IO HErr_t)

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

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

-- | Determines if the error auto reporting function for an error stack
--   conforms to the <tt>H5E_auto_stack_t</tt> typedef or the
--   <tt>H5E_auto_t</tt> typedef. The <tt>is_stack</tt> parameter is set to
--   1 for the first case and 0 for the latter case.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Eauto_is_v2(hid_t err_stack, unsigned *is_stack);
--   </pre>
h5e_auto_is_v2 :: HId_t -> Out CUInt -> IO HErr_t
p_H5Eauto_is_v2 :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

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

-- | Retrieves the number of error message.
--   
--   Returns non-negative value on success / negative on failure
--   
--   <pre>
--   ssize_t H5Eget_num(hid_t error_stack_id);
--   </pre>
h5e_get_num :: HId_t -> IO CSSize
p_H5Eget_num :: FunPtr (HId_t -> IO CSSize)
newtype H5E_major_t
H5E_major_t :: Int64 -> H5E_major_t
newtype H5E_minor_t
H5E_minor_t :: Int64 -> H5E_minor_t

-- | Information about an error element of error stack
--   
--   major error number
--   
--   minor error number
--   
--   function in which error occurred
--   
--   file in which error occurred
--   
--   line in file where error occurs
--   
--   optional supplied description
data H5E_error1_t
H5E_error1_t :: H5E_major_t -> H5E_minor_t -> CString -> CString -> CUInt -> CString -> H5E_error1_t
[h5e_error1_t'maj_num] :: H5E_error1_t -> H5E_major_t
[h5e_error1_t'min_num] :: H5E_error1_t -> H5E_minor_t
[h5e_error1_t'func_name] :: H5E_error1_t -> CString
[h5e_error1_t'file_name] :: H5E_error1_t -> CString
[h5e_error1_t'line] :: H5E_error1_t -> CUInt
[h5e_error1_t'desc] :: H5E_error1_t -> CString

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

-- | Callback type for <a>h5e_set_auto1</a>
--   
--   <pre>
--   typedef herr_t (*H5E_auto1_t)(void *client_data);
--   </pre>
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
type H5E_auto1_t a = FunPtr InOut a -> IO HErr_t
p'H5E_error1_t'func_name :: Ptr H5E_error1_t -> Ptr CString
p'H5E_error1_t'file_name :: Ptr H5E_error1_t -> Ptr CString

-- | This function is for backward compatbility. Clears the error stack for
--   the specified error stack.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Eclear1(void);
--   </pre>
p'H5E_error1_t'line :: Ptr H5E_error1_t -> Ptr CUInt
p'H5E_error1_t'desc :: Ptr H5E_error1_t -> Ptr CString
h5e_clear1 :: IO HErr_t
p_H5Eclear1 :: FunPtr (IO HErr_t)

-- | 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
--   
--   <pre>
--   herr_t H5Eget_auto1(H5E_auto1_t *func, void **client_data);
--   </pre>
--   
--   NB: the <tt>a</tt> type here should be existentially quantified, not
--   universally, but Haskell doesn't have a convenient way to say so in a
--   foreign import.
h5e_get_auto1 :: Out (H5E_auto1_t a) -> Out (InOut a) -> IO HErr_t
p_H5Eget_auto1 :: FunPtr (Out (H5E_auto1_t a) -> Out (InOut a) -> IO HErr_t)

-- | 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
--   
--   <pre>
--   herr_t H5Epush1(const char *file, const char *func, unsigned line,
--       H5E_major_t maj, H5E_minor_t min, const char *str);
--   </pre>
h5e_push1 :: CString -> CString -> CUInt -> H5E_major_t -> H5E_minor_t -> CString -> IO HErr_t
p_H5Epush1 :: FunPtr (CString -> CString -> CUInt -> H5E_major_t -> H5E_minor_t -> CString -> IO HErr_t)

-- | This function is for backward compatbility. Prints the error stack in
--   some default way. This is just a convenience function for
--   <a>h5e_walk1</a> 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
--   
--   <pre>
--   herr_t H5Eprint1(FILE *stream);
--   </pre>
--   
--   NB: The first parameter is declared as <a>InOut</a> to match
--   <a>H5E_auto1_t</a>, but I'm quite sure it never modifies the passed
--   value.
h5e_print1 :: InOut CFile -> IO HErr_t
p_H5Eprint1 :: FunPtr (InOut CFile -> IO HErr_t)

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

-- | 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
--   
--   <pre>
--   herr_t H5Ewalk1(H5E_direction_t direction, H5E_walk1_t func,
--       void *client_data);
--   </pre>
h5e_walk1 :: H5E_direction_t -> H5E_walk1_t a -> InOut a -> IO HErr_t
p_H5Ewalk1 :: FunPtr (H5E_direction_t -> H5E_walk1_t a -> InOut a -> IO HErr_t)

-- | Retrieves a major error message.
--   
--   Returns message if succeeds, otherwise returns NULL.
--   
--   <pre>
--   char *H5Eget_major(H5E_major_t maj);
--   </pre>
h5e_get_major :: H5E_major_t -> IO CString
p_H5Eget_major :: FunPtr (H5E_major_t -> IO CString)

-- | Retrieves a minor error message.
--   
--   Returns message if succeeds, otherwise returns NULL.
--   
--   <pre>
--   char *H5Eget_minor(H5E_minor_t min);
--   </pre>
h5e_get_minor :: H5E_minor_t -> IO CString
p_H5Eget_minor :: FunPtr (H5E_minor_t -> IO CString)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5E.H5E_error1_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5E.H5E_error2_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5E.H5E_major_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5E.H5E_minor_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_direction_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_error1_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_error2_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_major_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_minor_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5E.H5E_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_direction_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_error1_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_error2_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_major_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_minor_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5E.H5E_type_t

module Bindings.HDF5.ErrorCodes
data MajorErrCode

-- | Dataset
Dataset :: MajorErrCode

-- | Function entry/exit
Func :: MajorErrCode

-- | Data storage
Storage :: MajorErrCode

-- | File accessability
File :: MajorErrCode

-- | Shared Object Header Messages
SOHM :: MajorErrCode

-- | Symbol table
Sym :: MajorErrCode

-- | Virtual File Layer
VFL :: MajorErrCode

-- | Internal error (too specific to document in detail)
Internal :: MajorErrCode

-- | B-Tree node
BTree :: MajorErrCode

-- | References
Reference :: MajorErrCode

-- | Dataspace
Dataspace :: MajorErrCode

-- | Resource unavailable
Resource :: MajorErrCode

-- | Property lists
PList :: MajorErrCode

-- | Links
Link :: MajorErrCode

-- | Datatype
Datatype :: MajorErrCode

-- | Reference Counted Strings
RS :: MajorErrCode

-- | Heap
Heap :: MajorErrCode

-- | Object header
OHDR :: MajorErrCode

-- | Object atom
Atom :: MajorErrCode

-- | Attribute
Attr :: MajorErrCode

-- | Low-level I/O
IO :: MajorErrCode

-- | Skip Lists
SList :: MajorErrCode

-- | External file list
EFL :: MajorErrCode

-- | Ternary Search Trees
TST :: MajorErrCode

-- | Invalid arguments to routine
Args :: MajorErrCode

-- | Error API
Error :: MajorErrCode

-- | Data filters
PLine :: MajorErrCode

-- | Free Space Manager
FSpace :: MajorErrCode

-- | Object cache
Cache :: MajorErrCode

-- | Unrecognized major error code
UnknownMajor :: HId_t -> MajorErrCode
majorErrorCode :: Maybe MajorErrCode -> Maybe HId_t
majorErrorFromCode :: HId_t -> Maybe MajorErrCode
data MinorErrCode
SeekError :: MinorErrCode

-- | Read failed
ReadError :: MinorErrCode

-- | Write failed
WriteError :: MinorErrCode

-- | Close failed
CloseError :: MinorErrCode

-- | Address overflowed
Overflow :: MinorErrCode

-- | File control (fcntl) failed
FCNTL :: MinorErrCode

-- | No space available for allocation
NoSpace :: MinorErrCode

-- | Can't allocate space
CantAlloc :: MinorErrCode

-- | Unable to copy object
CantCopy :: MinorErrCode

-- | Unable to free object
CantFree :: MinorErrCode

-- | Object already exists
AlreadyExists :: MinorErrCode

-- | Unable to lock object
CantLock :: MinorErrCode

-- | Unable to unlock object
CantUnlock :: MinorErrCode

-- | Unable to garbage collect
CantGC :: MinorErrCode

-- | Unable to compute size
CantGetSize :: MinorErrCode

-- | Object is already open
ObjOpen :: MinorErrCode

-- | Can't restore condition
CantRestore :: MinorErrCode

-- | Can't compute value
CantCompute :: MinorErrCode

-- | Can't extend heap's space
CantExtend :: MinorErrCode

-- | Can't attach object
CantAttach :: MinorErrCode

-- | Can't update object
CantUpdate :: MinorErrCode

-- | Can't operate on object
CantOperate :: MinorErrCode

-- | Unable to initialize object
CantInit :: MinorErrCode

-- | Object already initialized
AlreadyInit :: MinorErrCode

-- | Unable to release object
CantRelease :: MinorErrCode

-- | Can't get value
CantGet :: MinorErrCode

-- | Can't set value
CantSet :: MinorErrCode

-- | Duplicate class name in parent class
DupClass :: MinorErrCode

-- | Can't merge objects
CantMerge :: MinorErrCode

-- | Can't revive object
CantRevive :: MinorErrCode

-- | Can't shrink container
CantShrink :: MinorErrCode

-- | Bad object header link count
LinkCount :: MinorErrCode

-- | Wrong version number
Version :: MinorErrCode

-- | Alignment error
Alignment :: MinorErrCode

-- | Unrecognized message
BadMesg :: MinorErrCode

-- | Can't delete message
CantDelete :: MinorErrCode

-- | Iteration failed
BadIter :: MinorErrCode

-- | Can't pack messages
CantPack :: MinorErrCode

-- | Can't reset object
CantReset :: MinorErrCode

-- | Unable to rename object
CantRename :: MinorErrCode

-- | System error message
SysErrStr :: MinorErrCode

-- | Requested filter is not available
NoFilter :: MinorErrCode

-- | Callback failed
Callback :: MinorErrCode

-- | Error from filter 'can apply' callback
CanApply :: MinorErrCode

-- | Error from filter 'set local' callback
SetLocal :: MinorErrCode

-- | Filter present but encoding disabled
NoEncoder :: MinorErrCode

-- | Filter operation failed
CantFilter :: MinorErrCode

-- | Can't open object
CantOpenObj :: MinorErrCode

-- | Can't close object
CantCloseObj :: MinorErrCode

-- | Name component is too long
CompLen :: MinorErrCode

-- | Problem with path to object
Path :: MinorErrCode

-- | File already exists
FileExists :: MinorErrCode

-- | File already open
FileOpen :: MinorErrCode

-- | Unable to create file
CantCreate :: MinorErrCode

-- | Unable to open file
CantOpenFile :: MinorErrCode

-- | Unable to close file
CantCloseFile :: MinorErrCode

-- | Not an HDF5 file
NotHDF5 :: MinorErrCode

-- | Bad file ID accessed
BadFile :: MinorErrCode

-- | File has been truncated
Truncated :: MinorErrCode

-- | File mount error
Mount :: MinorErrCode

-- | Unable to find atom information (already closed?)
BadAtom :: MinorErrCode

-- | Unable to find ID group information
BadGroup :: MinorErrCode

-- | Unable to register new atom
CantRegister :: MinorErrCode

-- | Unable to increment reference count
CantInc :: MinorErrCode

-- | Unable to decrement reference count
CantDec :: MinorErrCode

-- | Out of IDs for group
NoIds :: MinorErrCode

-- | Unable to flush data from cache
CantFlush :: MinorErrCode

-- | Unable to serialize data from cache
CantSerialize :: MinorErrCode

-- | Unable to load metadata into cache
CantLoad :: MinorErrCode

-- | Protected metadata error
Protect :: MinorErrCode

-- | Metadata not currently cached
NotCached :: MinorErrCode

-- | Internal error detected
System :: MinorErrCode

-- | Unable to insert metadata into cache
CantIns :: MinorErrCode

-- | Unable to protect metadata
CantProtect :: MinorErrCode

-- | Unable to unprotect metadata
CanTUnprotect :: MinorErrCode

-- | Unable to pin cache entry
CantPin :: MinorErrCode

-- | Unable to un-pin cache entry
CantUnpin :: MinorErrCode

-- | Unable to mark a pinned entry as dirty
CantMarkDirty :: MinorErrCode

-- | Unable to mark metadata as dirty
CantDirty :: MinorErrCode

-- | Unable to expunge a metadata cache entry
CantExpunge :: MinorErrCode

-- | Unable to resize a metadata cache entry
CantResize :: MinorErrCode

-- | Link traversal failure
Traverse :: MinorErrCode

-- | Too many soft links in path
NLinks :: MinorErrCode

-- | Link class not registered
NotRegistered :: MinorErrCode

-- | Can't move object
CantMove :: MinorErrCode

-- | Can't sort objects
CantSort :: MinorErrCode

-- | Some MPI function failed
MPI :: MinorErrCode

-- | MPI Error String
MPIErrStr :: MinorErrCode

-- | Can't receive data
CantRecv :: MinorErrCode

-- | Can't clip hyperslab region
CantClip :: MinorErrCode

-- | Can't count elements
CantCount :: MinorErrCode

-- | Can't select hyperslab
CantSelect :: MinorErrCode

-- | Can't move to next iterator location
CantNext :: MinorErrCode

-- | Invalid selection
BadSelect :: MinorErrCode

-- | Can't compare objects
CantCompare :: MinorErrCode

-- | Information is uinitialized
Uninitialized :: MinorErrCode

-- | Feature is unsupported
Unsupported :: MinorErrCode

-- | Inappropriate type
BadType :: MinorErrCode

-- | Out of range
BadRange :: MinorErrCode

-- | Bad value
BadValue :: MinorErrCode

-- | Object not found
NotFound :: MinorErrCode

-- | Object already exists
Exists :: MinorErrCode

-- | Unable to encode value
CantEncode :: MinorErrCode

-- | Unable to decode value
CantDecode :: MinorErrCode

-- | Unable to split node
CantSplit :: MinorErrCode

-- | Unable to redistribute records
CantRedistribute :: MinorErrCode

-- | Unable to swap records
CantSwap :: MinorErrCode

-- | Unable to insert object
CantInsert :: MinorErrCode

-- | Unable to list node
CantList :: MinorErrCode

-- | Unable to modify record
CantModify :: MinorErrCode

-- | Unable to remove object
CantRemove :: MinorErrCode

-- | Can't convert datatypes
CantConvert :: MinorErrCode

-- | Bad size for object
BadSize :: MinorErrCode

-- | Unrecognized minor error code
UnknownMinor :: HId_t -> MinorErrCode
minorErrorCode :: Maybe MinorErrCode -> Maybe HId_t
minorErrorFromCode :: HId_t -> Maybe MinorErrCode
instance GHC.Classes.Eq Bindings.HDF5.ErrorCodes.MajorErrCode
instance GHC.Classes.Eq Bindings.HDF5.ErrorCodes.MinorErrCode
instance GHC.Classes.Ord Bindings.HDF5.ErrorCodes.MajorErrCode
instance GHC.Classes.Ord Bindings.HDF5.ErrorCodes.MinorErrCode
instance GHC.Internal.Show.Show Bindings.HDF5.ErrorCodes.MajorErrCode
instance GHC.Internal.Show.Show Bindings.HDF5.ErrorCodes.MinorErrCode
instance GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Maybe.Maybe Bindings.HDF5.ErrorCodes.MinorErrCode)
instance GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Maybe.Maybe Bindings.HDF5.ErrorCodes.MajorErrCode)

module Bindings.HDF5.Raw.H5D
h5d_CHUNK_CACHE_NSLOTS_DEFAULT :: Num a => a
h5d_CHUNK_CACHE_NBYTES_DEFAULT :: Num a => a
h5d_CHUNK_CACHE_W0_DEFAULT :: Num a => a

-- | Property names for H5LTDdirect_chunk_write
h5d_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME :: String
h5d_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME :: String
h5d_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME :: String
h5d_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME :: String

-- | Values for the H5D_LAYOUT property
newtype H5D_layout_t
H5D_layout_t :: Int32 -> H5D_layout_t
h5d_LAYOUT_ERROR :: H5D_layout_t

-- | raw data is very small
h5d_COMPACT :: H5D_layout_t

-- | the default
h5d_CONTIGUOUS :: H5D_layout_t

-- | slow and fancy
h5d_CHUNKED :: H5D_layout_t
h5d_NLAYOUTS :: Num a => a

-- | Types of chunk index data structures
newtype H5D_chunk_index_t
H5D_chunk_index_t :: Word32 -> H5D_chunk_index_t

-- | v1 B-tree index
h5d_CHUNK_BTREE :: H5D_chunk_index_t

-- | Values for the space allocation time property
newtype H5D_alloc_time_t
H5D_alloc_time_t :: Int32 -> H5D_alloc_time_t
h5d_ALLOC_TIME_ERROR :: H5D_alloc_time_t
h5d_ALLOC_TIME_DEFAULT :: H5D_alloc_time_t
h5d_ALLOC_TIME_EARLY :: H5D_alloc_time_t
h5d_ALLOC_TIME_LATE :: H5D_alloc_time_t
h5d_ALLOC_TIME_INCR :: H5D_alloc_time_t

-- | Values for the status of space allocation
newtype H5D_space_status_t
H5D_space_status_t :: Int32 -> H5D_space_status_t
h5d_SPACE_STATUS_ERROR :: H5D_space_status_t
h5d_SPACE_STATUS_NOT_ALLOCATED :: H5D_space_status_t
h5d_SPACE_STATUS_PART_ALLOCATED :: H5D_space_status_t
h5d_SPACE_STATUS_ALLOCATED :: H5D_space_status_t

-- | Values for time of writing fill value property
newtype H5D_fill_time_t
H5D_fill_time_t :: Int32 -> H5D_fill_time_t
h5d_FILL_TIME_ERROR :: H5D_fill_time_t
h5d_FILL_TIME_ALLOC :: H5D_fill_time_t
h5d_FILL_TIME_NEVER :: H5D_fill_time_t
h5d_FILL_TIME_IFSET :: H5D_fill_time_t

-- | Values for fill value status
newtype H5D_fill_value_t
H5D_fill_value_t :: Int32 -> H5D_fill_value_t
h5d_FILL_VALUE_ERROR :: H5D_fill_value_t
h5d_FILL_VALUE_UNDEFINED :: H5D_fill_value_t
h5d_FILL_VALUE_DEFAULT :: H5D_fill_value_t
h5d_FILL_VALUE_USER_DEFINED :: H5D_fill_value_t

-- | Operator function type for <a>h5d_iterate</a>
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> elem :: <a>InOut</a> a </tt></i> Pointer to the element in
--   memory containing the current point.</li>
--   <li><i><tt> type_id :: <a>HId_t</a> </tt></i> Datatype ID for the
--   elements stored in ELEM.</li>
--   <li><i><tt> ndim :: <a>CUInt</a> </tt></i> Number of dimensions for
--   POINT array</li>
--   <li><i><tt> point :: <a>InArray</a> <a>HSize_t</a> </tt></i> Array
--   containing the location of the element within the original
--   dataspace.</li>
--   <li><i><tt> operator_data :: <a>InOut</a> b </tt></i> Pointer to any
--   user-defined data associated with the operation.</li>
--   </ul>
--   
--   Return Values:
--   
--   <ul>
--   <li>Zero causes the iterator to continue, returning zero when all
--   elements have been processed.</li>
--   <li>Positive causes the iterator to immediately return that positive
--   value, indicating short-circuit success. The iterator can be restarted
--   at the next element.</li>
--   <li>Negative causes the iterator to immediately return that value,
--   indicating failure. The iterator can be restarted at the next
--   element.</li>
--   </ul>
--   
--   <pre>
--   typedef herr_t (*H5D_operator_t)(void *elem, hid_t type_id, unsigned ndim,
--   				 const hsize_t *point, void *operator_data);
--   </pre>
type H5D_operator_t a b = FunPtr InOut a -> HId_t -> CUInt -> InArray HSize_t -> InOut b -> IO HErr_t
type H5D_scatter_func_t a b = FunPtr Out Ptr a -> Out CSize -> InOut b -> IO HErr_t
type H5D_gather_func_t a b = FunPtr InArray a -> CSize -> InOut b -> IO HErr_t

-- | Creates a new dataset named <tt>name</tt> at <tt>loc_id</tt>, opens
--   the dataset for access, and associates with that dataset constant and
--   initial persistent properties including the type of each datapoint as
--   stored in the file (<tt>type_id</tt>), the size of the dataset
--   (<tt>space_id</tt>), and other initial miscellaneous properties
--   (<tt>dcpl_id</tt>).
--   
--   All arguments are copied into the dataset, so the caller is allowed to
--   derive new types, data spaces, and creation parameters from the old
--   ones and reuse them in calls to create other datasets.
--   
--   On success, returns the object ID of the new dataset. At this point,
--   the dataset is ready to receive its raw data. Attempting to read raw
--   data from the dataset will probably return the fill value. The dataset
--   should be closed when the caller is no longer interested in it.
--   
--   On failure, returns a negative value.
--   
--   <pre>
--   hid_t H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id,
--       hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id);
--   </pre>
h5d_create2 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Dcreate2 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Creates a new dataset named <tt>name</tt> at <tt>loc_id</tt>, opens
--   the dataset for access, and associates with that dataset constant and
--   initial persistent properties including the type of each datapoint as
--   stored in the file (<tt>type_id</tt>), the size of the dataset
--   (<tt>space_id</tt>), and other initial miscellaneous properties
--   (<tt>dcpl_id</tt>).
--   
--   All arguments are copied into the dataset, so the caller is allowed to
--   derive new types, data spaces, and creation parameters from the old
--   ones and reuse them in calls to create other datasets.
--   
--   The resulting ID should be linked into the file with <tt>h5o_link</tt>
--   or it will be deleted when closed.
--   
--   On success returns the object ID of the new dataset. At this point,
--   the dataset is ready to receive its raw data. Attempting to read raw
--   data from the dataset will probably return the fill value. The dataset
--   should be linked into the group hierarchy before being closed or it
--   will be deleted. The dataset should be closed when the caller is no
--   longer interested in it.
--   
--   On failure, returns a negative value.
--   
--   <pre>
--   hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id,
--       hid_t plist_id, hid_t dapl_id);
--   </pre>
h5d_create_anon :: HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Dcreate_anon :: FunPtr (HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Finds a dataset named <tt>name</tt> at <tt>loc_id</tt>, opens it, and
--   returns its ID. The dataset should be close when the caller is no
--   longer interested in it.
--   
--   Takes a dataset access property list
--   
--   On success, returns a new dataset ID. On failure, returns a negative
--   value.
--   
--   <pre>
--   hid_t H5Dopen2(hid_t file_id, const char *name, hid_t dapl_id);
--   </pre>
h5d_open2 :: HId_t -> CString -> HId_t -> IO HId_t
p_H5Dopen2 :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

-- | Closes access to a dataset (<tt>dset_id</tt>) and releases resources
--   used by it. It is illegal to subsequently use that same dataset ID in
--   calls to other dataset functions.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Dclose(hid_t dset_id);
--   </pre>
h5d_close :: HId_t -> IO HErr_t
p_H5Dclose :: FunPtr (HId_t -> IO HErr_t)

-- | Returns a copy of the file data space for a dataset.
--   
--   On success, returns a new ID for a copy of the data space. The data
--   space should be released by calling <tt>h5s_close</tt>.
--   
--   <pre>
--   hid_t H5Dget_space(hid_t dset_id);
--   </pre>
h5d_get_space :: HId_t -> IO HId_t
p_H5Dget_space :: FunPtr (HId_t -> IO HId_t)

-- | Gets the status of data space allocation.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *allocation);
--   </pre>
h5d_get_space_status :: HId_t -> Out H5D_space_status_t -> IO HErr_t
p_H5Dget_space_status :: FunPtr (HId_t -> Out H5D_space_status_t -> IO HErr_t)

-- | Gets a copy of the file datatype for a dataset.
--   
--   On success, returns the ID for a copy of the datatype. The data type
--   should be released by calling <tt>h5t_close</tt>. On failure, returns
--   a negative value.
--   
--   <pre>
--   hid_t H5Dget_type(hid_t dset_id);
--   </pre>
h5d_get_type :: HId_t -> IO HId_t
p_H5Dget_type :: FunPtr (HId_t -> IO HId_t)

-- | Gets a copy of the dataset creation property list.
--   
--   On success, returns the ID for a copy of the dataset creation property
--   list. The template should be released by calling <tt>h5p_close</tt>.
--   
--   <pre>
--   hid_t H5Dget_create_plist(hid_t dset_id);
--   </pre>
h5d_get_create_plist :: HId_t -> IO HId_t
p_H5Dget_create_plist :: FunPtr (HId_t -> IO HId_t)

-- | Returns a copy of the dataset creation property list of the specified
--   dataset.
--   
--   The chunk cache parameters in the returned property lists will be
--   those used by the dataset. If the properties in the file access
--   property list were used to determine the dataset's chunk cache
--   configuration, then those properties will be present in the returned
--   dataset access property list. If the dataset does not use a chunked
--   layout, then the chunk cache properties will be set to the default.
--   The chunk cache properties in the returned list are considered to be
--   "set", and any use of this list will override the corresponding
--   properties in the file's file access property list.
--   
--   All link access properties in the returned list will be set to the
--   default values.
--   
--   On success, returns the ID for a copy of the dataset access property
--   list. The template should be released by calling <tt>h5p_close</tt>.
--   On failure, returns a negative value.
--   
--   <pre>
--   hid_t H5Dget_access_plist(hid_t dset_id);
--   </pre>
h5d_get_access_plist :: HId_t -> IO HId_t
p_H5Dget_access_plist :: FunPtr (HId_t -> IO HId_t)

-- | Returns the amount of storage that is required for the dataset. For
--   chunked datasets this is the number of allocated chunks times the
--   chunk size.
--   
--   On success, returns the amount of storage space allocated for the
--   dataset, not counting meta data. The return value may be zero if no
--   data has been stored.
--   
--   On failure, returns zero.
--   
--   <pre>
--   hsize_t H5Dget_storage_size(hid_t dset_id);
--   </pre>
h5d_get_storage_size :: HId_t -> IO HSize_t
p_H5Dget_storage_size :: FunPtr (HId_t -> IO HSize_t)

-- | Returns the address of dataset in file, or <a>hADDR_UNDEF</a> on
--   failure.
--   
--   <pre>
--   haddr_t H5Dget_offset(hid_t dset_id);
--   </pre>
h5d_get_offset :: HId_t -> IO HAddr_t
p_H5Dget_offset :: FunPtr (HId_t -> IO HAddr_t)

-- | Reads (part of) a data set from the file into application memory
--   <tt>buf</tt>. The part of the dataset to read is defined with
--   <tt>mem_space_id</tt> and <tt>file_space_id</tt>. The data points are
--   converted from their file type to the <tt>mem_type_id</tt> specified.
--   Additional miscellaneous data transfer properties can be passed to
--   this function with the <tt>plist_id</tt> argument.
--   
--   The <tt>file_space_id</tt> can be the constant <tt>h5s_ALL</tt> which
--   indicates that the entire file data space is to be referenced.
--   
--   The <tt>mem_space_id</tt> can be the constant <tt>h5s_ALL</tt> in
--   which case the memory data space is the same as the file data space
--   defined when the dataset was created.
--   
--   The number of elements in the memory data space must match the number
--   of elements in the file data space.
--   
--   The <tt>plist_id</tt> can be the constant <tt>h5p_DEFAULT</tt> in
--   which case the default data transfer properties are used.
--   
--   Returns non-negative on success / negative on failure.
--   
--   <pre>
--   herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
--          hid_t file_space_id, hid_t plist_id, void *buf/*out*/);
--   </pre>
h5d_read :: HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> OutArray a -> IO HErr_t
p_H5Dread :: FunPtr (HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> OutArray a -> IO HErr_t)

-- | Writes (part of) a data set from application memory <tt>buf</tt> to
--   the file. The part of the dataset to write is defined with the
--   <tt>mem_space_id</tt> and <tt>file_space_id</tt> arguments. The data
--   points are converted from their current type (<tt>mem_type_id</tt>) to
--   their file datatype. Additional miscellaneous data transfer properties
--   can be passed to this function with the <tt>plist_id</tt> argument.
--   
--   The <tt>file_space_id</tt> can be the constant <tt>h5s_ALL</tt> which
--   indicates that the entire file data space is to be referenced.
--   
--   The <tt>mem_space_id</tt> can be the constant <tt>h5s_ALL</tt> in
--   which case the memory data space is the same as the file data space
--   defined when the dataset was created.
--   
--   The number of elements in the memory data space must match the number
--   of elements in the file data space.
--   
--   The <tt>plist_id</tt> can be the constant <tt>h5p_DEFAULT</tt> in
--   which case the default data transfer properties are used.
--   
--   Returns non-negative on success / negative on failure.
--   
--   <pre>
--   herr_t H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
--          hid_t file_space_id, hid_t plist_id, const void *buf);
--   </pre>
h5d_write :: HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> InArray a -> IO HErr_t
p_H5Dwrite :: FunPtr (HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> InArray a -> IO HErr_t)

-- | This routine iterates over all the elements selected in a memory
--   buffer. The callback function is called once for each element selected
--   in the dataspace. The selection in the dataspace is modified so that
--   any elements already iterated over are removed from the selection if
--   the iteration is interrupted (by the <a>H5D_operator_t</a> function
--   returning non-zero) in the "middle" of the iteration and may be
--   re-started by the user where it left off.
--   
--   NOTE: Until "subtracting" elements from a selection is implemented,
--   the selection is not modified.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> buf :: <a>InOut</a> a </tt></i> Pointer to the buffer in
--   memory containing the elements to iterate over.</li>
--   <li><i><tt> type_id :: <a>HId_t</a> </tt></i> Datatype ID for the
--   elements stored in <tt>buf</tt>.</li>
--   <li><i><tt> space_id :: <a>HId_t</a> </tt></i> Dataspace ID for
--   <tt>buf</tt>, also contains the selection to iterate over.</li>
--   <li><i><tt> op :: <a>H5D_operator_t</a> a b </tt></i> Function pointer
--   to the routine to be called for each element in <tt>buf</tt> iterated
--   over.</li>
--   <li><i><tt> operator_data :: <a>InOut</a> b </tt></i> Pointer to any
--   user-defined data associated with the operation.</li>
--   </ul>
--   
--   Returns the return value of the last operator if it was non-zero, or
--   zero if all elements were processed. Otherwise returns a negative
--   value.
--   
--   <pre>
--   herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,
--          H5D_operator_t op, void *operator_data);
--   </pre>
h5d_iterate :: InOutArray a -> HId_t -> HId_t -> H5D_operator_t a b -> InOut b -> IO HErr_t
p_H5Diterate :: FunPtr (InOutArray a -> HId_t -> HId_t -> H5D_operator_t a b -> InOut b -> IO HErr_t)

-- | Frees the buffers allocated for storing variable-length data in
--   memory. Only frees the VL data in the selection defined in the
--   dataspace. The dataset transfer property list is required to find the
--   correct allocation/free methods for the VL data in the buffer.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf);
--   </pre>
h5d_vlen_reclaim :: HId_t -> HId_t -> HId_t -> Ptr a -> IO HErr_t
p_H5Dvlen_reclaim :: FunPtr (HId_t -> HId_t -> HId_t -> Ptr a -> IO HErr_t)

-- | This routine checks the number of bytes required to store the VL data
--   from the dataset, using the <tt>space_id</tt> for the selection in the
--   dataset on disk and the <tt>type_id</tt> for the memory representation
--   of the VL data, in memory. The <tt>size</tt> value is modified
--   according to how many bytes are required to store the VL data in
--   memory.
--   
--   This routine actually performs the read with a custom memory manager
--   which basically just counts the bytes requested and uses a temporary
--   memory buffer (through the H5FL API) to make certain enough space is
--   available to perform the read. Then the temporary buffer is released
--   and the number of bytes allocated is returned. Kinda kludgy, but
--   easier than the other method of trying to figure out the sizes without
--   actually reading the data in... - QAK
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Dvlen_get_buf_size(hid_t dataset_id, hid_t type_id, hid_t space_id, hsize_t *size);
--   </pre>
h5d_vlen_get_buf_size :: HId_t -> HId_t -> HId_t -> Out HSize_t -> IO HErr_t
p_H5Dvlen_get_buf_size :: FunPtr (HId_t -> HId_t -> HId_t -> Out HSize_t -> IO HErr_t)

-- | Fill a selection in memory with a value. Use the selection in the
--   dataspace to fill elements in a memory buffer. If "fill" parameter is
--   NULL, uses all zeros as fill value
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> fill :: <a>In</a> a </tt></i> Pointer to fill value to
--   use</li>
--   <li><i><tt> fill_type_id :: <a>HId_t</a> </tt></i> Datatype of the
--   fill value</li>
--   <li><i><tt> buf :: <a>InOut</a> b </tt></i> Memory buffer to fill
--   selection within</li>
--   <li><i><tt> buf_type_id :: <a>HId_t</a> </tt></i> Datatype of the
--   elements in buffer</li>
--   <li><i><tt> space_id :: <a>HId_t</a> </tt></i> Dataspace describing
--   memory buffer &amp; containing selection to use.</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure.
--   
--   <pre>
--   herr_t H5Dfill(const void *fill, hid_t fill_type, void *buf,
--           hid_t buf_type, hid_t space);
--   </pre>
h5d_fill :: In a -> HId_t -> InOutArray b -> HId_t -> HId_t -> IO HErr_t
p_H5Dfill :: FunPtr (In a -> HId_t -> InOutArray b -> HId_t -> HId_t -> IO HErr_t)

-- | Modifies the dimensions of a dataset. Can change to a smaller
--   dimension.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Dset_extent(hid_t dset_id, const hsize_t size[]);
--   </pre>
h5d_set_extent :: HId_t -> InArray HSize_t -> IO HErr_t
p_H5Dset_extent :: FunPtr (HId_t -> InArray HSize_t -> IO HErr_t)

-- | Scatters data provided by the callback op to the destination buffer
--   dst_buf, where the dimensions of dst_buf and the selection to be
--   scattered to are specified by the dataspace dst_space_id. The type of
--   the data to be scattered is specified by type_id.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Dscatter(H5D_scatter_func_t op, void *op_data, hid_t type_id,
--       hid_t dst_space_id, void *dst_buf);
--   </pre>
h5d_scatter :: H5D_scatter_func_t a b -> InOut b -> HId_t -> HId_t -> OutArray a -> IO HErr_t
p_H5Dscatter :: FunPtr (H5D_scatter_func_t a b -> InOut b -> HId_t -> HId_t -> OutArray a -> IO HErr_t)

-- | Gathers data provided from the source buffer src_buf to contiguous
--   buffer dst_buf, then calls the callback op. The dimensions of src_buf
--   and the selection to be gathered are specified by the dataspace
--   src_space_id. The type of the data to be gathered is specified by
--   type_id.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Dgather(hid_t src_space_id, const void *src_buf, hid_t type_id,
--       size_t dst_buf_size, void *dst_buf, H5D_gather_func_t op, void *op_data);
--   </pre>
h5d_gather :: HId_t -> InArray a -> HId_t -> CSize -> OutArray a -> H5D_gather_func_t a b -> InOut b -> IO HErr_t
p_H5Dgather :: FunPtr (HId_t -> InArray a -> HId_t -> CSize -> OutArray a -> H5D_gather_func_t a b -> InOut b -> IO HErr_t)

-- | Prints various information about a dataset. This function is not to be
--   documented in the API at this time.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Ddebug(hid_t dset_id);
--   </pre>
h5d_debug :: HId_t -> IO HErr_t

-- | Bit flags for the H5Pset_chunk_opts() and H5Pget_chunk_opts()
p_H5Ddebug :: FunPtr (HId_t -> IO HErr_t)
h5d_CHUNK_DONT_FILTER_PARTIAL_CHUNKS :: Num a => a

-- | actual data is stored in other datasets
h5d_VIRTUAL :: H5D_layout_t

-- | v1 B-tree index (default)
h5d_CHUNK_IDX_BTREE :: H5D_chunk_index_t

-- | Single Chunk index (cur dims[]=max dims[]=chunk dims[]; filtered &amp;
--   non-filtered)
h5d_CHUNK_IDX_SINGLE :: H5D_chunk_index_t

-- | Implicit: No Index (H5D_ALLOC_TIME_EARLY, non-filtered, fixed dims)
--   
--   Fixed array (for 0 unlimited dims)
h5d_CHUNK_IDX_NONE :: H5D_chunk_index_t

-- | Extensible array (for 1 unlimited dim)
h5d_CHUNK_IDX_FARRAY :: H5D_chunk_index_t

-- | v2 B-tree index (for &gt;1 unlimited dims)
h5d_CHUNK_IDX_EARRAY :: H5D_chunk_index_t
h5d_CHUNK_IDX_BT2 :: H5D_chunk_index_t
h5d_CHUNK_IDX_NTYPES :: Num a => a

-- | Values for VDS bounds option
newtype H5D_vds_view_t
H5D_vds_view_t :: Int32 -> H5D_vds_view_t
h5d_VDS_ERROR :: H5D_vds_view_t
h5d_VDS_FIRST_MISSING :: H5D_vds_view_t
h5d_VDS_LAST_AVAILABLE :: H5D_vds_view_t

-- | Internal API routines &gt; H5_DLL herr_t H5Dformat_convert(hid_t
--   dset_id);
h5d_format_convert :: HId_t -> IO HErr_t
p_H5Dformat_convert :: FunPtr (HId_t -> IO HErr_t)
h5d_get_chunk_index_type :: HId_t -> IO H5D_chunk_index_t
p_H5Dget_chunk_index_type :: FunPtr (HId_t -> IO H5D_chunk_index_t)

-- | Callback for H5Pset_append_flush() in a dataset access property list
--   &gt; typedef herr_t (*H5D_append_cb_t)(hid_t dataset_id, hsize_t
--   *cur_dims, void *op_data)
type H5D_append_cb_t a = FunPtr HId_t -> Out HSize_t -> InOut a -> IO HErr_t
h5d_flush :: HId_t -> IO HErr_t
p_H5Dflush :: FunPtr (HId_t -> IO HErr_t)
h5d_refresh :: HId_t -> IO HErr_t
p_H5Drefresh :: FunPtr (HId_t -> IO HErr_t)

-- | Creates a new dataset named <tt>name</tt> at <tt>loc_id</tt>, opens
--   the dataset for access, and associates with that dataset constant and
--   initial persistent properties including the type of each datapoint as
--   stored in the file (<tt>type_id</tt>), the size of the dataset
--   (<tt>space_id</tt>), and other initial miscellaneous properties
--   (<tt>dcpl_id</tt>).
--   
--   All arguments are copied into the dataset, so the caller is allowed to
--   derive new types, data spaces, and creation parameters from the old
--   ones and reuse them in calls to create other datasets.
--   
--   On success, returns the object ID of the new dataset. At this point,
--   the dataset is ready to receive its raw data. Attempting to read raw
--   data from the dataset will probably return the fill value. The dataset
--   should be closed when the caller is no longer interested in it.
--   
--   On failure, returns a negative value.
--   
--   Note: Deprecated in favor of <a>h5d_create2</a>
--   
--   <pre>
--   hid_t H5Dcreate1(hid_t file_id, const char *name, hid_t type_id,
--       hid_t space_id, hid_t dcpl_id);
--   </pre>
h5d_create1 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Dcreate1 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Finds a dataset named <tt>name</tt> at <tt>loc_id</tt>, opens it, and
--   returns its ID. The dataset should be closed when the caller is no
--   longer interested in it.
--   
--   On success returns a new dataset ID. On failure, returns a negative
--   value.
--   
--   Note: Deprecated in favor of <a>h5d_open2</a>
--   
--   <pre>
--   hid_t H5Dopen1(hid_t file_id, const char *name);
--   </pre>
h5d_open1 :: HId_t -> CString -> IO HId_t
p_H5Dopen1 :: FunPtr (HId_t -> CString -> IO HId_t)

-- | This function makes sure that the dataset is at least of size
--   <tt>size</tt>. The dimensionality of <tt>size</tt> is the same as the
--   data space of the dataset being changed.
--   
--   Note: Deprecated in favor of <a>h5d_set_extent</a>
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Dextend(hid_t dset_id, const hsize_t size[]);
--   </pre>
h5d_extend :: HId_t -> InArray HSize_t -> IO HErr_t
p_H5Dextend :: FunPtr (HId_t -> InArray HSize_t -> IO HErr_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_alloc_time_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_fill_time_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_fill_value_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_layout_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_space_status_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5D.H5D_vds_view_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_alloc_time_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_chunk_index_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_fill_time_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_fill_value_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_layout_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_space_status_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5D.H5D_vds_view_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_alloc_time_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_chunk_index_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_fill_time_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_fill_value_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_layout_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_space_status_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5D.H5D_vds_view_t

module Bindings.HDF5.Raw.H5AC

-- | <a>H5AC_cache_config_t</a> is a public structure intended for use in
--   public APIs. At least in its initial incarnation, it is basicaly a
--   copy of struct <tt>H5C_auto_size_ctl_t</tt>, minus the
--   <tt>report_fcn</tt> field, and plus the <tt>dirty_bytes_threshold</tt>
--   field.
--   
--   The <tt>report_fcn</tt> field is omitted, as including it would
--   require us to make <tt>H5C_t</tt> structure public.
--   
--   The <tt>dirty_bytes_threshold</tt> field does not appear in
--   <tt>H5C_auto_size_ctl_t</tt>, as synchronization between caches on
--   different processes is handled at the H5AC level, not at the level of
--   H5C. Note however that there is considerable interaction between this
--   value and the other fields in this structure.
--   
--   Similarly, the <tt>open_trace_file</tt>, <tt>close_trace_file</tt>,
--   and <tt>trace_file_name</tt> fields do not appear in
--   <tt>H5C_auto_size_ctl_t</tt>, as most trace file issues are handled at
--   the H5AC level. The one exception is storage of the pointer to the
--   trace file, which is handled by H5C.
--   
--   The structure is in H5ACpublic.h as we may wish to allow different
--   configuration options for metadata and raw data caches.
--   
--   The fields of the structure are discussed individually below.
--   
--   Integer field containing the version number of this version of the
--   H5AC_cache_config_t structure. Any instance of H5AC_cache_config_t
--   passed to the cache must have a known version number, or an error will
--   be flagged.
--   
--   Boolean field used to enable and disable the default reporting
--   function. This function is invoked every time the automatic cache
--   resize code is run, and reports on its activities.
--   
--   This is a debugging function, and should normally be turned off.
--   
--   Boolean field indicating whether the trace_file_name field should be
--   used to open a trace file for the cache.
--   
--   The trace file is a debuging feature that allow the capture of top
--   level metadata cache requests for purposes of debugging and/or
--   optimization. This field should normally be set to FALSE, as trace
--   file collection imposes considerable overhead.
--   
--   This field should only be set to TRUE when the trace_file_name
--   contains the full path of the desired trace file, and either there is
--   no open trace file on the cache, or the close_trace_file field is also
--   TRUE.
--   
--   Boolean field indicating whether the current trace file (if any)
--   should be closed.
--   
--   See the above comments on the open_trace_file field. This field should
--   be set to FALSE unless there is an open trace file on the cache that
--   you wish to close.
--   
--   Full path of the trace file to be opened if the
--   <tt>open_trace_file</tt> field is TRUE.
--   
--   In the parallel case, an ascii representation of the mpi rank of the
--   process will be appended to the file name to yield a unique trace file
--   name for each process.
--   
--   The length of the path must not exceed
--   <a>h5ac__MAX_TRACE_FILE_NAME_LEN</a> characters.
--   
--   Boolean field used to either report the current evictions enabled
--   status of the cache, or to set the cache's evictions enabled status.
--   
--   In general, the metadata cache should always be allowed to evict
--   entries. However, in some cases it is advantageous to disable
--   evictions briefly, and thereby postpone metadata writes. However, this
--   must be done with care, as the cache can grow quickly. If you do this,
--   re-enable evictions as soon as possible and monitor cache size.
--   
--   At present, evictions can only be disabled if automatic cache resizing
--   is also disabled (that is, <tt>( <tt>incr_mode</tt> ==
--   <a>h5c_incr__off</a> ) &amp;&amp; ( <tt>decr_mode</tt> ==
--   <a>h5c_decr__off</a> )</tt>). There is no logical reason why this
--   should be so, but it simplifies implementation and testing, and I
--   can't think of any reason why it would be desireable. If you can think
--   of one, I'll revisit the issue.
--   
--   Boolean flag indicating whether the size of the initial size of the
--   cache is to be set to the value given in the initial_size field. If
--   <tt>set_initial_size</tt> is FALSE, the <tt>initial_size</tt> field is
--   ignored.
--   
--   If enabled, this field contain the size the cache is to be set to upon
--   receipt of this structure. Needless to say, <tt>initial_size</tt> must
--   lie in the closed interval <tt>[<tt>min_size</tt> ..
--   <tt>max_size</tt>]</tt>.
--   
--   double in the range 0 to 1 indicating the fraction of the cache that
--   is to be kept clean. This field is only used in parallel mode. Typical
--   values are 0.1 to 0.5.
--   
--   Maximum size to which the cache can be adjusted. The supplied value
--   must fall in the closed interval <tt>[<tt>MIN_MAX_CACHE_SIZE</tt> ..
--   <tt>MAX_MAX_CACHE_SIZE</tt>]</tt>. Also, <tt>max_size</tt> must be
--   greater than or equal to <tt>min_size</tt>.
--   
--   Minimum size to which the cache can be adjusted. The supplied value
--   must fall in the closed interval <tt>[<tt>H5C__MIN_MAX_CACHE_SIZE</tt>
--   .. <tt>H5C__MAX_MAX_CACHE_SIZE</tt>]</tt>. Also, <tt>min_size</tt>
--   must be less than or equal to <tt>max_size</tt>.
--   
--   Number of accesses on the cache over which to collect hit rate stats
--   before running the automatic cache resize code, if it is enabled.
--   
--   At the end of an epoch, we discard prior hit rate data and start
--   collecting afresh. The epoch_length must lie in the closed interval
--   <tt>[<tt>H5C__MIN_AR_EPOCH_LENGTH</tt> ..
--   <tt>H5C__MAX_AR_EPOCH_LENGTH</tt>]</tt>.
--   
--   Instance of the <a>H5C_cache_incr_mode</a> enumerated type whose value
--   indicates how we determine whether the cache size should be increased.
--   At present there are two possible values:
--   
--   <ul>
--   <li><a>h5c_incr__off</a>: Don't attempt to increase the size of the
--   cache automatically. When this increment mode is selected, the
--   remaining fields in the cache size increase section ar ignored.</li>
--   <li><a>h5c_incr__threshold</a>: Attempt to increase the size of the
--   cache whenever the average hit rate over the last epoch drops below
--   the value supplied in the lower_hr_threshold field. Note that this
--   attempt will fail if the cache is already at its maximum size, or if
--   the cache is not already using all available space.</li>
--   </ul>
--   
--   Note that you must set <tt>decr_mode</tt> to <a>h5c_incr__off</a> if
--   you disable metadata cache entry evictions.
--   
--   Lower hit rate threshold. If the increment mode (<tt>incr_mode</tt>)
--   is <a>h5c_incr__threshold</a> and the hit rate drops below the value
--   supplied in this field in an epoch, increment the cache size by
--   <tt>size_increment</tt>. Note that cache size may not be incremented
--   above <tt>max_size</tt>, and that the increment may be further
--   restricted by the <tt>max_increment</tt> field if it is enabled.
--   
--   When enabled, this field must contain a value in the range [0.0, 1.0].
--   Depending on the <tt>incr_mode</tt> selected, it may also have to be
--   less than <tt>upper_hr_threshold</tt>.
--   
--   Double containing the multiplier used to derive the new cache size
--   from the old if a cache size increment is triggered. The increment
--   must be greater than 1.0, and should not exceed 2.0.
--   
--   The new cache size is obtained my multiplying the current max cache
--   size by the increment, and then clamping to max_size and to stay
--   within the max_increment as necessary.
--   
--   Boolean flag indicating whether the max_increment field should be used
--   to limit the maximum cache size increment.
--   
--   If enabled by the <tt>apply_max_increment</tt> field described above,
--   this field contains the maximum number of bytes by which the cache
--   size can be increased in a single re-size.
--   
--   Instance of the <a>H5C_cache_flash_incr_mode</a> enumerated type whose
--   value indicates whether and by which algorithm we should make flash
--   increases in the size of the cache to accomodate insertion of large
--   entries and large increases in the size of a single entry.
--   
--   The addition of the flash increment mode was occasioned by performance
--   problems that appear when a local heap is increased to a size in
--   excess of the current cache size. While the existing re-size code
--   dealt with this eventually, performance was very bad for the remainder
--   of the epoch.
--   
--   At present, there are two possible values for the
--   <tt>flash_incr_mode</tt>:
--   
--   <ul>
--   <li><a>h5c_flash_incr__off</a>: Don't perform flash increases in the
--   size of the cache.</li>
--   <li><a>h5c_flash_incr__add_space</a>: Let <tt>x</tt> be either the
--   size of a newly newly inserted entry, or the number of bytes by which
--   the size of an existing entry has been increased. If <tt>x &gt;
--   flash_threshold * current max cache size</tt>, increase the current
--   maximum cache size by <tt>x * flash_multiple</tt> less any free space
--   in the cache, and start a new epoch. For now at least, pay no
--   attention to the maximum increment.</li>
--   </ul>
--   
--   In both of the above cases, the flash increment pays no attention to
--   the maximum increment (at least in this first incarnation), but DOES
--   stay within <tt>max_size</tt>.
--   
--   With a little thought, it should be obvious that the above flash cache
--   size increase algorithm is not sufficient for all circumstances. For
--   example, suppose the user round robins through <tt>(1/flash_threshold)
--   + 1</tt> groups, adding one data set to each on each pass. Then all
--   will increase in size at about the same time, requiring the max cache
--   size to at least double to maintain acceptable performance, however
--   the above flash increment algorithm will not be triggered.
--   
--   Hopefully, the add space algorithms detailed above will be sufficient
--   for the performance problems encountered to date. However, we should
--   expect to revisit the issue.
--   
--   Double containing the multiple described above in the
--   <a>h5c_flash_incr__add_space</a> section of the discussion of the
--   <tt>flash_incr_mode</tt> section. This field is ignored unless
--   <tt>flash_incr_mode</tt> is <a>h5c_flash_incr__add_space</a>.
--   
--   Double containing the factor by which current max cache size is
--   multiplied to obtain the size threshold for the <tt>add_space</tt>
--   flash increment algorithm. The field is ignored unless
--   <tt>flash_incr_mode</tt> is <a>h5c_flash_incr__add_space</a>.
--   
--   Instance of the <a>H5C_cache_decr_mode</a> enumerated type whose value
--   indicates how we determine whether the cache size should be decreased.
--   At present there are four possibilities.
--   
--   <ul>
--   <li><a>h5c_decr__off</a>: Don't attempt to decrease the size of the
--   cache automatically. When this increment mode is selected, the
--   remaining fields in the cache size decrease section are ignored.</li>
--   <li><a>h5c_decr__threshold</a>: Attempt to decrease the size of the
--   cache whenever the average hit rate over the last epoch rises above
--   the value supplied in the upper_hr_threshold field.</li>
--   <li><a>h5c_decr__age_out</a>: At the end of each epoch, search the
--   cache for entries that have not been accessed for at least the number
--   of epochs specified in the <tt>epochs_before_eviction</tt> field, and
--   evict these entries. Conceptually, the maximum cache size is then
--   decreased to match the new actual cache size. However, this reduction
--   may be modified by the <tt>min_size</tt>, the <tt>max_decrement</tt>,
--   and/or the <tt>empty_reserve</tt>.</li>
--   <li><a>h5c_decr__age_out_with_threshold</a>: Same as <tt>age_out</tt>,
--   but we only attempt to reduce the cache size when the hit rate
--   observed over the last epoch exceeds the value provided in the
--   <tt>upper_hr_threshold</tt> field.</li>
--   </ul>
--   
--   Note that you must set <tt>decr_mode</tt> to <a>h5c_decr__off</a> if
--   you disable metadata cache entry evictions.
--   
--   Upper hit rate threshold. The use of this field varies according to
--   the current <tt>decr_mode</tt>:
--   
--   <ul>
--   <li><a>h5c_decr__off</a> or <a>h5c_decr__age_out</a>: The value of
--   this field is ignored.</li>
--   <li><a>h5c_decr__threshold</a>: If the hit rate exceeds this threshold
--   in any epoch, attempt to decrement the cache size by
--   <tt>size_decrement</tt>.Note that cache size may not be decremented
--   below <tt>min_size</tt>.Note also that if the <tt>upper_threshold</tt>
--   is 1.0, the cache size will never be reduced.</li>
--   <li><a>h5c_decr__age_out_with_threshold</a>: If the hit rate exceeds
--   this threshold in any epoch, attempt to reduce the cache size by
--   evicting entries that have not been accessed for more than the
--   specified number of epochs.</li>
--   </ul>
--   
--   This field is only used when the decr_mode is
--   <a>h5c_decr__threshold</a>.
--   
--   The field is a double containing the multiplier used to derive the new
--   cache size from the old if a cache size decrement is triggered. The
--   decrement must be in the range 0.0 (in which case the cache will try
--   to contract to its minimum size) to 1.0 (in which case the cache will
--   never shrink).
--   
--   Boolean flag used to determine whether decrements in cache size are to
--   be limited by the <tt>max_decrement</tt> field.
--   
--   Maximum number of bytes by which the cache size can be decreased in a
--   single re-size. Note that decrements may also be restricted by the
--   min_size of the cache, and (in age out modes) by the
--   <tt>empty_reserve</tt> field.
--   
--   Integer field used in H5C_decr__age_out and
--   <a>h5c_decr__age_out_with_threshold</a> decrement modes.
--   
--   This field contains the number of epochs an entry must remain
--   unaccessed before it is evicted in an attempt to reduce the cache
--   size. If applicable, this field must lie in the range <tt>[1 ..
--   <tt>H5C__MAX_EPOCH_MARKERS</tt>]</tt>.
--   
--   Boolean field controlling whether the <tt>empty_reserve</tt> field is
--   to be used in computing the new cache size when the <tt>decr_mode</tt>
--   is <a>h5c_decr__age_out</a> or
--   <a>h5c_decr__age_out_with_threshold</a>.
--   
--   To avoid a constant racheting down of cache size by small amounts in
--   the <a>h5c_decr__age_out</a> and
--   <a>h5c_decr__age_out_with_threshold</a> modes, this field allows one
--   to require that any cache size reductions leave the specified fraction
--   of unused space in the cache.
--   
--   The value of this field must be in the range [0.0, 1.0]. I would
--   expect typical values to be in the range of 0.01 to 0.1.
--   
--   Threshold of dirty byte creation used to synchronize updates between
--   caches. (See above for outline and motivation.)
--   
--   This value MUST be consistant across all processes accessing the file.
--   This field is ignored unless HDF5 has been compiled for parallel.
--   
--   Integer field containing a code indicating the desired metadata write
--   strategy. The valid values of this field are enumerated and discussed
--   below:
data H5AC_cache_config_t
H5AC_cache_config_t :: CInt -> HBool_t -> HBool_t -> HBool_t -> [CChar] -> HBool_t -> HBool_t -> CSize -> CDouble -> CSize -> CSize -> CLong -> H5C_cache_incr_mode -> CDouble -> CDouble -> HBool_t -> CSize -> H5C_cache_flash_incr_mode -> CDouble -> CDouble -> H5C_cache_decr_mode -> CDouble -> CDouble -> HBool_t -> CSize -> CInt -> HBool_t -> CDouble -> CSize -> CInt -> H5AC_cache_config_t
[h5ac_cache_config_t'version] :: H5AC_cache_config_t -> CInt
[h5ac_cache_config_t'rpt_fcn_enabled] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'open_trace_file] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'close_trace_file] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'trace_file_name] :: H5AC_cache_config_t -> [CChar]
[h5ac_cache_config_t'evictions_enabled] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'set_initial_size] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'initial_size] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'min_clean_fraction] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'max_size] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'min_size] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'epoch_length] :: H5AC_cache_config_t -> CLong
[h5ac_cache_config_t'incr_mode] :: H5AC_cache_config_t -> H5C_cache_incr_mode
[h5ac_cache_config_t'lower_hr_threshold] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'increment] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'apply_max_increment] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'max_increment] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'flash_incr_mode] :: H5AC_cache_config_t -> H5C_cache_flash_incr_mode
[h5ac_cache_config_t'flash_multiple] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'flash_threshold] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'decr_mode] :: H5AC_cache_config_t -> H5C_cache_decr_mode
[h5ac_cache_config_t'upper_hr_threshold] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'decrement] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'apply_max_decrement] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'max_decrement] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'epochs_before_eviction] :: H5AC_cache_config_t -> CInt
[h5ac_cache_config_t'apply_empty_reserve] :: H5AC_cache_config_t -> HBool_t
[h5ac_cache_config_t'empty_reserve] :: H5AC_cache_config_t -> CDouble
[h5ac_cache_config_t'dirty_bytes_threshold] :: H5AC_cache_config_t -> CSize
[h5ac_cache_config_t'metadata_write_strategy] :: H5AC_cache_config_t -> CInt
h5ac__CURR_CACHE_CONFIG_VERSION :: Num a => a
h5ac__MAX_TRACE_FILE_NAME_LEN :: Num a => a

-- | When <tt>metadata_write_strategy</tt> is set to this value, only
--   process zero is allowed to write dirty metadata to disk. All other
--   processes must retain dirty metadata until they are informed at a sync
--   point that the dirty metadata in question has been written to disk.
--   
--   When the sync point is reached (or when there is a user generated
--   flush), process zero flushes sufficient entries to bring it into
--   complience with its min clean size (or flushes all dirty entries in
--   the case of a user generated flush), broad casts the list of entries
--   just cleaned to all the other processes, and then exits the sync
--   point.
--   
--   Upon receipt of the broadcast, the other processes mark the indicated
--   entries as clean, and leave the sync point as well.
h5ac_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY :: Num a => a

-- | In the distributed metadata write strategy, process zero still makes
--   the decisions as to what entries should be flushed, but the actual
--   flushes are distributed across the processes in the computation to the
--   extent possible.
--   
--   In this strategy, when a sync point is triggered (either by dirty
--   metadata creation or manual flush), all processes enter a barrier.
--   
--   On the other side of the barrier, process 0 constructs an ordered list
--   of the entries to be flushed, and then broadcasts this list to the
--   caches in all the processes.
--   
--   All processes then scan the list of entries to be flushed, flushing
--   some, and marking the rest as clean. The algorithm for this purpose
--   ensures that each entry in the list is flushed exactly once, and all
--   are marked clean in each cache.
--   
--   Note that in the case of a flush of the cache, no message passing is
--   necessary, as all processes have the same list of dirty entries, and
--   all of these entries must be flushed. Thus in this case it is
--   sufficient for each process to sort its list of dirty entries after
--   leaving the initial barrier, and use this list as if it had been
--   received from process zero.
--   
--   To avoid possible messages from the past/future, all caches must wait
--   until all caches are done before leaving the sync point.
p'H5AC_cache_config_t'version :: Ptr H5AC_cache_config_t -> Ptr CInt
p'H5AC_cache_config_t'rpt_fcn_enabled :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'open_trace_file :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'close_trace_file :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'trace_file_name :: Ptr H5AC_cache_config_t -> Ptr CChar
p'H5AC_cache_config_t'evictions_enabled :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'set_initial_size :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'initial_size :: Ptr H5AC_cache_config_t -> Ptr CSize
h5ac_METADATA_WRITE_STRATEGY__DISTRIBUTED :: Num a => a
p'H5AC_cache_config_t'min_clean_fraction :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'max_size :: Ptr H5AC_cache_config_t -> Ptr CSize
p'H5AC_cache_config_t'min_size :: Ptr H5AC_cache_config_t -> Ptr CSize
p'H5AC_cache_config_t'epoch_length :: Ptr H5AC_cache_config_t -> Ptr CLong
p'H5AC_cache_config_t'incr_mode :: Ptr H5AC_cache_config_t -> Ptr H5C_cache_incr_mode
p'H5AC_cache_config_t'lower_hr_threshold :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'increment :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'apply_max_increment :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'max_increment :: Ptr H5AC_cache_config_t -> Ptr CSize
p'H5AC_cache_config_t'flash_incr_mode :: Ptr H5AC_cache_config_t -> Ptr H5C_cache_flash_incr_mode
p'H5AC_cache_config_t'flash_multiple :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'flash_threshold :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'decr_mode :: Ptr H5AC_cache_config_t -> Ptr H5C_cache_decr_mode
p'H5AC_cache_config_t'upper_hr_threshold :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'decrement :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'apply_max_decrement :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'max_decrement :: Ptr H5AC_cache_config_t -> Ptr CSize
p'H5AC_cache_config_t'epochs_before_eviction :: Ptr H5AC_cache_config_t -> Ptr CInt
p'H5AC_cache_config_t'apply_empty_reserve :: Ptr H5AC_cache_config_t -> Ptr HBool_t
p'H5AC_cache_config_t'empty_reserve :: Ptr H5AC_cache_config_t -> Ptr CDouble
p'H5AC_cache_config_t'dirty_bytes_threshold :: Ptr H5AC_cache_config_t -> Ptr CSize
p'H5AC_cache_config_t'metadata_write_strategy :: Ptr H5AC_cache_config_t -> Ptr CInt
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5AC.H5AC_cache_config_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5AC.H5AC_cache_config_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5AC.H5AC_cache_config_t

module Bindings.HDF5.Raw.H5F

-- | absence of rdwr =&gt; rd-only
h5f_ACC_RDONLY :: Num a => a

-- | open for read and write
h5f_ACC_RDWR :: Num a => a

-- | overwrite existing files
h5f_ACC_TRUNC :: Num a => a

-- | fail if file already exists
h5f_ACC_EXCL :: Num a => a

-- | print debug info
h5f_ACC_DEBUG :: Num a => a

-- | create non-existing files
h5f_ACC_CREAT :: Num a => a

-- | Value passed to <tt>h5p_set_elink_acc_flags</tt> to cause flags to be
--   taken from the parent file.
h5f_ACC_DEFAULT :: Num a => a

-- | File objects
h5f_OBJ_FILE :: Num a => a

-- | Dataset objects
h5f_OBJ_DATASET :: Num a => a

-- | Group objects
h5f_OBJ_GROUP :: Num a => a

-- | Named datatype objects
h5f_OBJ_DATATYPE :: Num a => a

-- | Attribute objects
h5f_OBJ_ATTR :: Num a => a
h5f_OBJ_ALL :: Num a => a

-- | Restrict search to objects opened through current file ID
h5f_OBJ_LOCAL :: Num a => a
h5f_FAMILY_DEFAULT :: HSize_t

-- | The difference between a single file and a set of mounted files
newtype H5F_scope_t
H5F_scope_t :: Word32 -> H5F_scope_t

-- | specified file handle only
h5f_SCOPE_LOCAL :: H5F_scope_t

-- | entire virtual file
h5f_SCOPE_GLOBAL :: H5F_scope_t

-- | Unlimited file size for <tt>h5p_set_external</tt>
h5f_UNLIMITED :: HSize_t

-- | How does file close behave?
newtype H5F_close_degree_t
H5F_close_degree_t :: Word32 -> H5F_close_degree_t

-- | Use the degree pre-defined by underlining VFL
h5f_CLOSE_DEFAULT :: H5F_close_degree_t

-- | file closes only after all opened objects are closed
h5f_CLOSE_WEAK :: H5F_close_degree_t

-- | if no opened objects, file is close; otherwise, file close fails
h5f_CLOSE_SEMI :: H5F_close_degree_t

-- | if there are opened objects, close them first, then close file
h5f_CLOSE_STRONG :: H5F_close_degree_t

-- | Types of allocation requests. The values larger than
--   <a>h5fd_MEM_DEFAULT</a> should not change other than adding new types
--   to the end. These numbers might appear in files.
newtype H5F_mem_t
H5F_mem_t :: Int32 -> H5F_mem_t

-- | Data should not appear in the free list. Must be negative.
h5fd_MEM_NOLIST :: H5F_mem_t

-- | Value not yet set. Can also be the datatype set in a larger allocation
--   that will be suballocated by the library. Must be zero.
--   
--   Superblock data
h5fd_MEM_DEFAULT :: H5F_mem_t

-- | B-tree data
h5fd_MEM_SUPER :: H5F_mem_t
h5fd_MEM_BTREE :: H5F_mem_t

-- | Raw data (content of datasets, etc.)
--   
--   Global heap data
h5fd_MEM_DRAW :: H5F_mem_t

-- | Local heap data
h5fd_MEM_GHEAP :: H5F_mem_t

-- | Object header data
h5fd_MEM_LHEAP :: H5F_mem_t
h5fd_MEM_OHDR :: H5F_mem_t

-- | Sentinel value - must be last
h5fd_MEM_NTYPES :: Num a => a

-- | Library's file format versions
newtype H5F_libver_t
H5F_libver_t :: Int32 -> H5F_libver_t

-- | Use the earliest possible format for storing objects
h5f_LIBVER_EARLIEST :: H5F_libver_t

-- | Use the latest possible format available for storing objects
h5f_LIBVER_LATEST :: H5F_libver_t

-- | Check the file signature to detect an HDF5 file.
--   
--   <ul>
--   <li><i>Bugs:</i> This function is not robust: it only uses the default
--   file driver when attempting to open the file when in fact it should
--   use all known file drivers.</li>
--   </ul>
--   
--   <pre>
--   htri_t H5Fis_hdf5(const char *filename);
--   </pre>
h5f_is_hdf5 :: CString -> IO HTri_t
p_H5Fis_hdf5 :: FunPtr (CString -> IO HTri_t)

-- | This is the primary function for creating HDF5 files. The
--   <tt>flags</tt> parameter determines whether an existing file will be
--   overwritten or not. All newly created files are opened for both
--   reading and writing. All flags may be combined with the bit-wise OR
--   operator (<tt> .|. </tt> from <a>Data.Bits</a>) to change the behavior
--   of the file create call.
--   
--   The more complex behaviors of a file's creation and access are
--   controlled through the file-creation and file-access property lists.
--   The value of <tt>h5p_DEFAULT</tt> for a template value indicates that
--   the library should use the default values for the appropriate
--   template.
--   
--   See also: <a>Bindings.HDF5.Raw.H5F</a> for the list of supported
--   flags. <a>Bindings.HDF5.Raw.H5P</a> for the list of file creation and
--   file access properties.
--   
--   On success, returns a file ID. On failure, returns a negative value.
--   
--   <pre>
--   hid_t  H5Fcreate(const char *filename, unsigned flags,
--          hid_t create_plist, hid_t access_plist);
--   </pre>
h5f_create :: CString -> CUInt -> HId_t -> HId_t -> IO HId_t
p_H5Fcreate :: FunPtr (CString -> CUInt -> HId_t -> HId_t -> IO HId_t)

-- | This is the primary function for accessing existing HDF5 files. The
--   <tt>flags</tt> argument determines whether writing to an existing file
--   will be allowed or not. All flags may be combined with the bit-wise OR
--   operator (<tt> .|. </tt> from <a>Data.Bits</a>) to change the behavior
--   of the file open call. The more complex behaviors of a file's access
--   are controlled through the file-access property list.
--   
--   See Also: <a>Bindings.HDF5.Raw.H5F</a> for a list of possible values
--   for <tt>flags</tt>.
--   
--   On success, returns a file ID. On failure, returns a negative value.
--   
--   <pre>
--   hid_t  H5Fopen(const char *filename, unsigned flags,
--          hid_t access_plist);
--   </pre>
h5f_open :: CString -> CUInt -> HId_t -> IO HId_t
p_H5Fopen :: FunPtr (CString -> CUInt -> HId_t -> IO HId_t)

-- | Reopen a file. The new file handle which is returned points to the
--   same file as the specified file handle. Both handles share caches and
--   other information. The only difference between the handles is that the
--   new handle is not mounted anywhere and no files are mounted on it.
--   
--   On success, returns a file ID. On failure, returns a negative value.
--   
--   <pre>
--   hid_t  H5Freopen(hid_t file_id);
--   </pre>
h5f_reopen :: HId_t -> IO HId_t
p_H5Freopen :: FunPtr (HId_t -> IO HId_t)

-- | Flushes all outstanding buffers of a file to disk but does not remove
--   them from the cache. The <tt>object_id</tt> can be a file, dataset,
--   group, attribute, or named data type.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Fflush(hid_t object_id, H5F_scope_t scope);
--   </pre>
h5f_flush :: HId_t -> H5F_scope_t -> IO HErr_t
p_H5Fflush :: FunPtr (HId_t -> H5F_scope_t -> IO HErr_t)

-- | This function closes the file specified by <tt>file_id</tt> by
--   flushing all data to storage, and terminating access to the file
--   through <tt>file_id</tt>. If objects (e.g., datasets, groups, etc.)
--   are open in the file then the underlying storage is not closed until
--   those objects are closed; however, all data for the file and the open
--   objects is flushed.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Fclose(hid_t file_id);
--   </pre>
h5f_close :: HId_t -> IO HErr_t
p_H5Fclose :: FunPtr (HId_t -> IO HErr_t)

-- | Get an atom for a copy of the file-creation property list for this
--   file. This function returns an atom with a copy of the properties used
--   to create a file.
--   
--   On success, returns a template ID. On failure, returns a negative
--   value.
--   
--   <pre>
--   hid_t  H5Fget_create_plist(hid_t file_id);
--   </pre>
h5f_get_create_plist :: HId_t -> IO HId_t
p_H5Fget_create_plist :: FunPtr (HId_t -> IO HId_t)

-- | Returns a copy of the file access property list of the specified file.
--   
--   NOTE: If you are going to overwrite information in the copied property
--   list that was previously opened and assigned to the property list,
--   then you must close it before overwriting the values.
--   
--   On success, returns an Object ID for a copy of the file access
--   property list. On failure, returns a negative value.
--   
--   <pre>
--   hid_t  H5Fget_access_plist(hid_t file_id);
--   </pre>
h5f_get_access_plist :: HId_t -> IO HId_t
p_H5Fget_access_plist :: FunPtr (HId_t -> IO HId_t)

-- | Public API to retrieve the file's <tt>intent</tt> flags passed during
--   <a>h5f_open</a>.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t H5Fget_intent(hid_t file_id, unsigned * intent);
--   </pre>
h5f_get_intent :: HId_t -> Out CUInt -> IO HErr_t
p_H5Fget_intent :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Returns the number of opened object IDs (files, datasets, groups and
--   datatypes) in the same file.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   ssize_t H5Fget_obj_count(hid_t file_id, unsigned types);
--   </pre>
h5f_get_obj_count :: HId_t -> CUInt -> IO CSSize
p_H5Fget_obj_count :: FunPtr (HId_t -> CUInt -> IO CSSize)

-- | Returns a list of opened object IDs.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   ssize_t H5Fget_obj_ids(hid_t file_id, unsigned types, size_t max_objs, hid_t *obj_id_list);
--   </pre>
h5f_get_obj_ids :: HId_t -> CUInt -> CSize -> OutArray HId_t -> IO CSSize
p_H5Fget_obj_ids :: FunPtr (HId_t -> CUInt -> CSize -> OutArray HId_t -> IO CSSize)

-- | Returns a pointer to the file handle of the low-level file driver.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle);
--   </pre>
h5f_get_vfd_handle :: HId_t -> HId_t -> Out (Ptr CFile) -> IO HErr_t
p_H5Fget_vfd_handle :: FunPtr (HId_t -> HId_t -> Out (Ptr CFile) -> IO HErr_t)

-- | Mount file <tt>child_id</tt> onto the group specified by
--   <tt>loc_id</tt> and <tt>name</tt> using mount properties
--   <tt>plist_id</tt>.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fmount(hid_t loc, const char *name, hid_t child, hid_t plist);
--   </pre>
h5f_mount :: HId_t -> CString -> HId_t -> HId_t -> IO HErr_t
p_H5Fmount :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> IO HErr_t)

-- | Given a mount point, dissassociate the mount point's file from the
--   file mounted there. Do not close either file.
--   
--   The mount point can either be the group in the parent or the root
--   group of the mounted file (both groups have the same name). If the
--   mount point was opened before the mount then it's the group in the
--   parent, but if it was opened after the mount then it's the root group
--   of the child.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Funmount(hid_t loc, const char *name);
--   </pre>
h5f_unmount :: HId_t -> CString -> IO HErr_t
p_H5Funmount :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Retrieves the amount of free space in the file. Returns a negative
--   value on failure.
--   
--   hssize_t H5Fget_freespace(hid_t file_id);
h5f_get_freespace :: HId_t -> IO HSSize_t
p_H5Fget_freespace :: FunPtr (HId_t -> IO HSSize_t)

-- | Retrieves the file size of the HDF5 file. This function is called
--   after an existing file is opened in order to learn the true size of
--   the underlying file.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fget_filesize(hid_t file_id, hsize_t *size);
--   </pre>
h5f_get_filesize :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Fget_filesize :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | If a buffer is provided (via the buf_ptr argument) and is big enough
--   (size in buf_len argument), load *buf_ptr with an image of the open
--   file whose ID is provided in the file_id parameter, and return the
--   number of bytes copied to the buffer.
--   
--   If the buffer exists, but is too small to contain an image of the
--   indicated file, return a negative number.
--   
--   Finally, if no buffer is provided, return the size of the buffer
--   needed. This value is simply the eoa of the target file.
--   
--   Note that any user block is skipped.
--   
--   Also note that the function may not be used on files opened with
--   either the split/multi file driver or the family file driver.
--   
--   In the former case, the sparse address space makes the get file image
--   operation impractical, due to the size of the image typically
--   required.
--   
--   In the case of the family file driver, the problem is the driver
--   message in the super block, which will prevent the image being opened
--   with any driver other than the family file driver -- which negates the
--   purpose of the operation. This can be fixed, but no resources for this
--   now.
--   
--   Return: Success: Bytes copied / number of bytes needed. Failure:
--   negative value
--   
--   <pre>
--   ssize_t H5Fget_file_image(hid_t file_id, void * buf_ptr, size_t buf_len);
--   </pre>
h5f_get_file_image :: HId_t -> InArray a -> CSize -> IO CSSize
p_H5Fget_file_image :: FunPtr (HId_t -> InArray a -> CSize -> IO CSSize)

-- | Retrieves the current automatic cache resize configuration from the
--   metadata cache, and return it in <tt>config_ptr</tt>.
--   
--   Note that the <tt>version</tt> field of <tt>config_ptr</tt> must be
--   correctly filled in by the caller. This allows us to adapt for
--   obsolete versions of the structure.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fget_mdc_config(hid_t file_id,
--          H5AC_cache_config_t * config_ptr);
--   </pre>
h5f_get_mdc_config :: HId_t -> Out H5AC_cache_config_t -> IO HErr_t
p_H5Fget_mdc_config :: FunPtr (HId_t -> Out H5AC_cache_config_t -> IO HErr_t)

-- | Sets the current metadata cache automatic resize configuration, using
--   the contents of the instance of <a>H5AC_cache_config_t</a> pointed to
--   by <tt>config_ptr</tt>.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fset_mdc_config(hid_t file_id,
--          H5AC_cache_config_t * config_ptr);
--   </pre>
h5f_set_mdc_config :: HId_t -> In H5AC_cache_config_t -> IO HErr_t
p_H5Fset_mdc_config :: FunPtr (HId_t -> In H5AC_cache_config_t -> IO HErr_t)

-- | Retrieves the current hit rate from the metadata cache. This rate is
--   the overall hit rate since the last time the hit rate statistics were
--   reset either manually or automatically.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fget_mdc_hit_rate(hid_t file_id, double * hit_rate_ptr);
--   </pre>
h5f_get_mdc_hit_rate :: HId_t -> Out CDouble -> IO HErr_t
p_H5Fget_mdc_hit_rate :: FunPtr (HId_t -> Out CDouble -> IO HErr_t)

-- | Retrieves the maximum size, minimum clean size, current size, and
--   current number of entries from the metadata cache associated with the
--   specified file. If any of the ptr parameters are NULL, the associated
--   datum is not returned.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fget_mdc_size(hid_t file_id,
--          size_t * max_size_ptr,
--          size_t * min_clean_size_ptr,
--          size_t * cur_size_ptr,
--          int * cur_num_entries_ptr);
--   </pre>
h5f_get_mdc_size :: HId_t -> Out CSize -> Out CSize -> Out CSize -> Out CInt -> IO HErr_t
p_H5Fget_mdc_size :: FunPtr (HId_t -> Out CSize -> Out CSize -> Out CSize -> Out CInt -> IO HErr_t)

-- | Reset the hit rate statistic whose current value can be obtained via
--   the <a>h5f_get_mdc_hit_rate</a> call. Note that this statistic will
--   also be reset once per epoch by the automatic cache resize code if it
--   is enabled.
--   
--   It is probably a bad idea to call this function unless you are
--   controlling cache size from your program instead of using our cache
--   size control code.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id);
--   </pre>
h5f_reset_mdc_hit_rate_stats :: HId_t -> IO HErr_t
p_H5Freset_mdc_hit_rate_stats :: FunPtr (HId_t -> IO HErr_t)

-- | Gets the name of the file to which object OBJ_ID belongs. If
--   <tt>name</tt> is non-NULL then write up to <tt>size</tt> bytes into
--   that buffer and always return the length of the entry name. Otherwise
--   <tt>size</tt> is ignored and the function does not store the name,
--   just returning the number of characters required to store the name. If
--   an error occurs then the buffer pointed to by <tt>name</tt> (NULL or
--   non-NULL) is unchanged and the function returns a negative value.
--   
--   Note: This routine returns the name that was used to open the file,
--   not the actual name after resolving symlinks, etc.
--   
--   Returns the length of the file name (_not_ the length of the data
--   copied into the output buffer) on success, or a negative value on
--   failure.
--   
--   <pre>
--   ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size);
--   </pre>
h5f_get_name :: HId_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Fget_name :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

-- | #. Get storage size for superblock extension if there is one
--   
--   #. Get the amount of btree and heap storage for entries in the SOHM
--   table if there is one.
--   
--   #. Consider success when there is no superblock extension and/or SOHM
--   table
--   
--   Returns non-negative on success, negative on failure
--   
--   |Releases the external file cache associated with the provided file,
--   potentially closing any cached files unless they are held open from
--   somewhere else.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Fclear_elink_file_cache(hid_t file_id);
--   </pre>
h5f_clear_elink_file_cache :: HId_t -> IO HErr_t
p_H5Fclear_elink_file_cache :: FunPtr (HId_t -> IO HErr_t)

-- | indicate that this file is open for writing in a
--   single-writer/multi-reader (SWMR) scenario. Note that the process(es)
--   opening the file for reading must open the file with RDONLY access,
--   and use the special <a>SWMR_READ</a> access flag.
h5f_ACC_SWMR_WRITE :: Num a => a

-- | indicate that this file is open for reading in a
--   single-writer/multi-reader (SWMR) scenario. Note that the process(es)
--   opening the file for SWMR reading must also open the file with the
--   RDONLY flag. */
h5f_ACC_SWMR_READ :: Num a => a
data H5F_info1_t
H5F_info1_t :: HSize_t -> HSize_t -> H5_ih_info_t -> H5F_info1_t
[h5f_info1_t'super_ext_size] :: H5F_info1_t -> HSize_t
[h5f_info1_t'sohm'hdr_size] :: H5F_info1_t -> HSize_t
[h5f_info1_t'sohm'msgs_info] :: H5F_info1_t -> H5_ih_info_t
p'H5F_info1_t'super_ext_size :: Ptr H5F_info1_t -> Ptr HSize_t
p'H5F_info1_t'sohm'hdr_size :: Ptr H5F_info1_t -> Ptr HSize_t
p'H5F_info1_t'sohm'msgs_info :: Ptr H5F_info1_t -> Ptr H5_ih_info_t
data H5F_info2_t
H5F_info2_t :: CUInt -> HSize_t -> HSize_t -> CUInt -> HSize_t -> HSize_t -> CUInt -> HSize_t -> H5_ih_info_t -> H5F_info2_t
[h5f_info2_t'super'version] :: H5F_info2_t -> CUInt
[h5f_info2_t'super'super_size] :: H5F_info2_t -> HSize_t
[h5f_info2_t'super'super_ext_size] :: H5F_info2_t -> HSize_t
[h5f_info2_t'free'version] :: H5F_info2_t -> CUInt
[h5f_info2_t'free'meta_size] :: H5F_info2_t -> HSize_t
[h5f_info2_t'free'tot_space] :: H5F_info2_t -> HSize_t
[h5f_info2_t'sohm'version] :: H5F_info2_t -> CUInt
[h5f_info2_t'sohm'hdr_size] :: H5F_info2_t -> HSize_t
[h5f_info2_t'sohm'msgs_info] :: H5F_info2_t -> H5_ih_info_t

-- | Free space section information
--   
--   Address of free space section
--   
--   Size of free space section
p'H5F_info2_t'super'version :: Ptr H5F_info2_t -> Ptr CUInt
data H5F_sect_info_t
H5F_sect_info_t :: HAddr_t -> HSize_t -> H5F_sect_info_t
[h5f_sect_info_t'addr] :: H5F_sect_info_t -> HAddr_t
[h5f_sect_info_t'size] :: H5F_sect_info_t -> HSize_t

-- | File space handling strategy
p'H5F_info2_t'super'super_size :: Ptr H5F_info2_t -> Ptr HSize_t
newtype H5F_file_space_type_t
H5F_file_space_type_t :: Word32 -> H5F_file_space_type_t

-- | Default (or current) free space strategy setting
p'H5F_sect_info_t'addr :: Ptr H5F_sect_info_t -> Ptr HAddr_t
p'H5F_info2_t'super'super_ext_size :: Ptr H5F_info2_t -> Ptr HSize_t
p'H5F_sect_info_t'size :: Ptr H5F_sect_info_t -> Ptr HSize_t
p'H5F_info2_t'free'version :: Ptr H5F_info2_t -> Ptr CUInt
h5f_FILE_SPACE_DEFAULT :: H5F_file_space_type_t
p'H5F_info2_t'free'meta_size :: Ptr H5F_info2_t -> Ptr HSize_t
p'H5F_info2_t'free'tot_space :: Ptr H5F_info2_t -> Ptr HSize_t
h5f_FILE_SPACE_ALL_PERSIST :: H5F_file_space_type_t

-- | Non-persistent free space managers, aggregators, virtual file driver
--   This is the library default
p'H5F_info2_t'sohm'version :: Ptr H5F_info2_t -> Ptr CUInt

-- | Aggregators, Virtual file driver
p'H5F_info2_t'sohm'hdr_size :: Ptr H5F_info2_t -> Ptr HSize_t
h5f_FILE_SPACE_ALL :: H5F_file_space_type_t
p'H5F_info2_t'sohm'msgs_info :: Ptr H5F_info2_t -> Ptr H5_ih_info_t
h5f_FILE_SPACE_AGGR_VFD :: H5F_file_space_type_t
h5f_FILE_SPACE_VFD :: H5F_file_space_type_t
h5f_FILE_SPACE_NTYPES :: Num a => a

-- | Data structure to report the collection of read retries for metadata
--   items with checksum Used by public routine
--   H5Fget_metadata_read_retry_info() TODO check the retries static array
h5f_NUM_METADATA_READ_RETRY_TYPES :: Num a => a
data H5F_retry_info_t
H5F_retry_info_t :: CUInt -> Ptr Word32 -> H5F_retry_info_t
[h5f_retry_info_t'nbins] :: H5F_retry_info_t -> CUInt
[h5f_retry_info_t'retries] :: H5F_retry_info_t -> Ptr Word32
type H5F_flush_cb_t a = FunPtr HId_t -> InOut a -> IO HErr_t
p'H5F_retry_info_t'nbins :: Ptr H5F_retry_info_t -> Ptr CUInt
h5f_format_convert :: HId_t -> IO HErr_t
h5f_get_mdc_logging_status :: HId_t -> Out hbool_t -> Out hbool_t -> IO HErr_t
p'H5F_retry_info_t'retries :: Ptr H5F_retry_info_t -> Ptr (Ptr Word32)
p_H5Fformat_convert :: FunPtr (HId_t -> IO HErr_t)
h5f_get_metadata_read_retry_info :: HId_t -> Out H5F_retry_info_t -> IO HErr_t
p_H5Fget_mdc_logging_status :: FunPtr (HId_t -> Out hbool_t -> Out hbool_t -> IO HErr_t)
h5f_get_free_sections :: HId_t -> H5F_mem_t -> CSize -> Out H5F_sect_info_t -> IO CSSize
h5f_start_mdc_logging :: HId_t -> IO HErr_t
p_H5Fget_metadata_read_retry_info :: FunPtr (HId_t -> Out H5F_retry_info_t -> IO HErr_t)
h5f_start_swmr_write :: HId_t -> IO HErr_t
p_H5Fget_free_sections :: FunPtr (HId_t -> H5F_mem_t -> CSize -> Out H5F_sect_info_t -> IO CSSize)
h5f_stop_mdc_logging :: HId_t -> IO HErr_t
p_H5Fstart_mdc_logging :: FunPtr (HId_t -> IO HErr_t)
p_H5Fstart_swmr_write :: FunPtr (HId_t -> IO HErr_t)
p_H5Fstop_mdc_logging :: FunPtr (HId_t -> IO HErr_t)
type H5F_info_t = H5F_info1_t
h5f_get_info1 :: HId_t -> Out H5F_info1_t -> IO HErr_t
h5f_get_info2 :: HId_t -> Out H5F_info2_t -> IO HErr_t
p_H5Fget_info1 :: FunPtr (HId_t -> Out H5F_info1_t -> IO HErr_t)
p_H5Fget_info2 :: FunPtr (HId_t -> Out H5F_info2_t -> IO HErr_t)
h5f_get_info :: HId_t -> Out H5F_info1_t -> IO HErr_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_close_degree_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_file_space_type_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_info1_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_info2_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_mem_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_retry_info_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5F.H5F_sect_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_close_degree_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_file_space_type_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_info1_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_info2_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_libver_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_mem_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_retry_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_scope_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5F.H5F_sect_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_close_degree_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_file_space_type_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_info1_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_info2_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_libver_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_mem_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_retry_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_scope_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5F.H5F_sect_info_t


-- | The Virtual File Layer as described in documentation. This is the
--   greatest common denominator for all types of storage access whether a
--   file, memory, network, etc. This layer usually just dispatches the
--   request to an actual file driver layer.
module Bindings.HDF5.Raw.H5FD

-- | Default VFL driver value
h5fd_VFD_DEFAULT :: HId_t

-- | Types of allocation requests: see <a>Bindings.HDF5.Raw.H5F</a>
type H5FD_mem_t = H5F_mem_t

-- | Map "fractal heap" header blocks to <tt>ohdr</tt> type file memory,
--   since its a fair amount of work to add a new kind of file memory and
--   they are similar enough to object headers and probably too minor to
--   deserve their own type.
h5fd_MEM_FHEAP_HDR :: H5F_mem_t

-- | Map "fractal heap" indirect blocks to <tt>ohdr</tt> type file memory,
--   since they are similar to fractal heap header blocks.
h5fd_MEM_FHEAP_IBLOCK :: H5F_mem_t

-- | Map "fractal heap" direct blocks to <tt>lheap</tt> type file memory,
--   since they will be replacing local heaps.
h5fd_MEM_FHEAP_DBLOCK :: H5F_mem_t

-- | Map "fractal heap" <tt>huge</tt> objects to <tt>draw</tt> type file
--   memory, since they represent large objects that are directly stored in
--   the file.
h5fd_MEM_FHEAP_HUGE_OBJ :: H5F_mem_t

-- | Map "free space" header blocks to <tt>ohdr</tt> type file memory,
--   since its a fair amount of work to add a new kind of file memory and
--   they are similar enough to object headers and probably too minor to
--   deserve their own type.
h5fd_MEM_FSPACE_HDR :: H5F_mem_t

-- | Map "free space" serialized sections to <tt>lheap</tt> type file
--   memory, since they are similar enough to local heap info.
h5fd_MEM_FSPACE_SINFO :: H5F_mem_t

-- | Map "shared object header message" master table to <tt>ohdr</tt> type
--   file memory, since its a fair amount of work to add a new kind of file
--   memory and they are similar enough to object headers and probably too
--   minor to deserve their own type.
h5fd_MEM_SOHM_TABLE :: H5F_mem_t

-- | Map "shared object header message" indices to <tt>btree</tt> type file
--   memory, since they are similar enough to B-tree nodes.
h5fd_MEM_SOHM_INDEX :: H5F_mem_t

-- | Initialize a free-list map which maps all types of allocation requests
--   to a single free list. This is useful for drivers that don't really
--   care about keeping different requests segregated in the underlying
--   file and which want to make most efficient reuse of freed memory. The
--   use of the <a>h5fd_MEM_SUPER</a> free list is arbitrary.
h5fd_FLMAP_SINGLE :: OutArray H5FD_mem_t -> CSize -> IO ()

-- | A free-list map which segregates requests into "raw" or "meta" data
--   pools.
h5fd_FLMAP_DICHOTOMY :: OutArray H5FD_mem_t -> CSize -> IO ()

-- | The default free list map which causes each request type to use its
--   own free-list.
h5fd_FLMAP_DEFAULT :: OutArray H5FD_mem_t -> CSize -> IO ()

-- | Defining <a>h5fd_FEAT_AGGREGATE_METADATA</a> for a VFL driver means
--   that the library will attempt to allocate a larger block for metadata
--   and then sub-allocate each metadata request from that larger block.
h5fd_FEAT_AGGREGATE_METADATA :: Num a => a

-- | Defining <a>h5fd_FEAT_ACCUMULATE_METADATA</a> for a VFL driver means
--   that the library will attempt to cache metadata as it is written to
--   the file and build up a larger block of metadata to eventually pass to
--   the VFL <tt>write</tt> routine.
--   
--   Distinguish between updating the metadata accumulator on writes
--   (<a>h5fd_FEAT_ACCUMULATE_METADATA_WRITE</a>) and reads
--   (<a>h5fd_FEAT_ACCUMULATE_METADATA_READ</a>). This is particularly
--   (perhaps only, even) important for MPI-I/O where we guarantee that
--   writes are collective, but reads may not be. If we were to allow the
--   metadata accumulator to be written during a read operation, the
--   application would hang.
h5fd_FEAT_ACCUMULATE_METADATA :: Num a => a
h5fd_FEAT_ACCUMULATE_METADATA_WRITE :: Num a => a
h5fd_FEAT_ACCUMULATE_METADATA_READ :: Num a => a

-- | Defining <a>h5fd_FEAT_DATA_SIEVE</a> for a VFL driver means that the
--   library will attempt to cache raw data as it is read from/written to a
--   file in a "data seive" buffer. See Rajeev Thakur's papers:
--   
--   <ul>
--   <li><a>http://www.mcs.anl.gov/~thakur/papers/romio-coll.ps.gz</a></li>
--   
--   <li><a>http://www.mcs.anl.gov/~thakur/papers/mpio-high-perf.ps.gz</a></li>
--   </ul>
h5fd_FEAT_DATA_SIEVE :: Num a => a

-- | Defining <a>h5fd_FEAT_AGGREGATE_SMALLDATA</a> for a VFL driver means
--   that the library will attempt to allocate a larger block for "small"
--   raw data and then sub-allocate "small" raw data requests from that
--   larger block.
h5fd_FEAT_AGGREGATE_SMALLDATA :: Num a => a

-- | Defining <a>h5fd_FEAT_IGNORE_DRVRINFO</a> for a VFL driver means that
--   the library will ignore the driver info that is encoded in the file
--   for the VFL driver. (This will cause the driver info to be eliminated
--   from the file when it is flushed<i>closed, if the file is opened
--   R</i>W).
h5fd_FEAT_IGNORE_DRVRINFO :: Num a => a

-- | Defining <tt>h5fd_FEAT_DIRTY_SBLK_LOAD</tt> for a VFL driver means
--   that the library will mark the superblock dirty when the file is
--   opened R/W. This will cause the driver info to be re-encoded when the
--   file is flushed/closed.
h5fd_FEAT_DIRTY_DRVRINFO_LOAD :: Num a => a

-- | Defining <a>h5fd_FEAT_POSIX_COMPAT_HANDLE</a> for a VFL driver means
--   that the handle for the VFD (returned with the <tt>get_handle</tt>
--   callback) is of type <tt>int</tt> and is compatible with POSIX I/O
--   calls.
h5fd_FEAT_POSIX_COMPAT_HANDLE :: Num a => a

-- | Defining <tt>H5FD_FEAT_ALLOW_FILE_IMAGE</tt> for a VFL driver means
--   that the driver is able to use a file image in the fapl as the initial
--   contents of a file.
h5fd_FEAT_ALLOW_FILE_IMAGE :: Num a => a

-- | Defining <tt>H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS</tt> for a VFL
--   driver means that the driver is able to use callbacks to make a copy
--   of the image to store in memory.
h5fd_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS :: Num a => a

-- | Class information for each file driver
data H5FD_class_t
H5FD_class_t :: CString -> HAddr_t -> H5F_close_degree_t -> FunPtr (IO HErr_t) -> FunPtr (In H5FD_t -> IO HSize_t) -> FunPtr (In H5FD_t -> OutArray CChar -> Out CUChar -> IO HErr_t) -> FunPtr (In H5FD_t -> CString -> In CUChar -> IO HErr_t) -> CSize -> FunPtr (In H5FD_t -> IO (Ptr ())) -> FunPtr (Ptr () -> IO (Ptr ())) -> FunPtr (Ptr () -> IO HErr_t) -> CSize -> FunPtr (Ptr () -> IO (Ptr ())) -> FunPtr (Ptr () -> IO HErr_t) -> FunPtr (CString -> CUInt -> HId_t -> HAddr_t -> IO (Ptr H5FD_t)) -> FunPtr (In H5FD_t -> IO HErr_t) -> FunPtr (In H5FD_t -> In H5FD_t -> IO CInt) -> FunPtr (In H5FD_t -> Ptr CULong -> IO HErr_t) -> FunPtr (In H5FD_t -> Out H5FD_mem_t -> IO HErr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HSize_t -> IO HAddr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> HSize_t -> IO HErr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> HAddr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t) -> FunPtr (In H5FD_t -> HId_t -> Out (Ptr ()) -> IO HErr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> OutArray () -> IO HErr_t) -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> InArray () -> IO HErr_t) -> FunPtr (In H5FD_t -> HId_t -> CUInt -> IO HErr_t) -> FunPtr (In H5FD_t -> HId_t -> HBool_t -> IO HErr_t) -> FunPtr (In H5FD_t -> HBool_t -> IO HErr_t) -> FunPtr (In H5FD_t -> IO HErr_t) -> [H5FD_mem_t] -> H5FD_class_t
[h5fd_class_t'name] :: H5FD_class_t -> CString
[h5fd_class_t'maxaddr] :: H5FD_class_t -> HAddr_t
[h5fd_class_t'fc_degree] :: H5FD_class_t -> H5F_close_degree_t
[h5fd_class_t'terminate] :: H5FD_class_t -> FunPtr (IO HErr_t)
[h5fd_class_t'sb_size] :: H5FD_class_t -> FunPtr (In H5FD_t -> IO HSize_t)
[h5fd_class_t'sb_encode] :: H5FD_class_t -> FunPtr (In H5FD_t -> OutArray CChar -> Out CUChar -> IO HErr_t)
[h5fd_class_t'sb_decode] :: H5FD_class_t -> FunPtr (In H5FD_t -> CString -> In CUChar -> IO HErr_t)
[h5fd_class_t'fapl_size] :: H5FD_class_t -> CSize
[h5fd_class_t'fapl_get] :: H5FD_class_t -> FunPtr (In H5FD_t -> IO (Ptr ()))
[h5fd_class_t'fapl_copy] :: H5FD_class_t -> FunPtr (Ptr () -> IO (Ptr ()))
[h5fd_class_t'fapl_free] :: H5FD_class_t -> FunPtr (Ptr () -> IO HErr_t)
[h5fd_class_t'dxpl_size] :: H5FD_class_t -> CSize
[h5fd_class_t'dxpl_copy] :: H5FD_class_t -> FunPtr (Ptr () -> IO (Ptr ()))
[h5fd_class_t'dxpl_free] :: H5FD_class_t -> FunPtr (Ptr () -> IO HErr_t)
[h5fd_class_t'open] :: H5FD_class_t -> FunPtr (CString -> CUInt -> HId_t -> HAddr_t -> IO (Ptr H5FD_t))
[h5fd_class_t'close] :: H5FD_class_t -> FunPtr (In H5FD_t -> IO HErr_t)
[h5fd_class_t'cmp] :: H5FD_class_t -> FunPtr (In H5FD_t -> In H5FD_t -> IO CInt)
[h5fd_class_t'query] :: H5FD_class_t -> FunPtr (In H5FD_t -> Ptr CULong -> IO HErr_t)
[h5fd_class_t'get_type_map] :: H5FD_class_t -> FunPtr (In H5FD_t -> Out H5FD_mem_t -> IO HErr_t)
[h5fd_class_t'alloc] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HSize_t -> IO HAddr_t)
[h5fd_class_t'free] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> HSize_t -> IO HErr_t)
[h5fd_class_t'get_eoa] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t)
[h5fd_class_t'set_eoa] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> HAddr_t)
[h5fd_class_t'get_eof] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t)
[h5fd_class_t'get_handle] :: H5FD_class_t -> FunPtr (In H5FD_t -> HId_t -> Out (Ptr ()) -> IO HErr_t)
[h5fd_class_t'read] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> OutArray () -> IO HErr_t)
[h5fd_class_t'write] :: H5FD_class_t -> FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> InArray () -> IO HErr_t)
[h5fd_class_t'flush] :: H5FD_class_t -> FunPtr (In H5FD_t -> HId_t -> CUInt -> IO HErr_t)
[h5fd_class_t'truncate] :: H5FD_class_t -> FunPtr (In H5FD_t -> HId_t -> HBool_t -> IO HErr_t)
[h5fd_class_t'lock] :: H5FD_class_t -> FunPtr (In H5FD_t -> HBool_t -> IO HErr_t)
[h5fd_class_t'unlock] :: H5FD_class_t -> FunPtr (In H5FD_t -> IO HErr_t)
[h5fd_class_t'fl_map] :: H5FD_class_t -> [H5FD_mem_t]

-- | A free list is a singly-linked list of address/size pairs.
data H5FD_free_t
H5FD_free_t :: HAddr_t -> HSize_t -> Ptr H5FD_free_t -> H5FD_free_t
[h5fd_free_t'addr] :: H5FD_free_t -> HAddr_t
[h5fd_free_t'size] :: H5FD_free_t -> HSize_t
[h5fd_free_t'next] :: H5FD_free_t -> Ptr H5FD_free_t

-- | The main datatype for each driver. Public fields common to all drivers
--   are declared here and the driver appends private fields in memory.
p'H5FD_free_t'addr :: Ptr H5FD_free_t -> Ptr HAddr_t

-- | driver ID for this file
p'H5FD_free_t'size :: Ptr H5FD_free_t -> Ptr HSize_t

-- | constant class info
p'H5FD_free_t'next :: Ptr H5FD_free_t -> Ptr (Ptr H5FD_free_t)

-- | File <tt>serial</tt> number
--   
--   VFL Driver feature Flags
--   
--   For this file, overrides class
--   
--   Base address for HDF5 data w/in file
--   
--   Threshold for alignment
p'H5FD_class_t'name :: Ptr H5FD_class_t -> Ptr CString

-- | Allocation alignment
p'H5FD_class_t'maxaddr :: Ptr H5FD_class_t -> Ptr HAddr_t
p'H5FD_class_t'fc_degree :: Ptr H5FD_class_t -> Ptr H5F_close_degree_t
data H5FD_t
H5FD_t :: HId_t -> Ptr H5FD_class_t -> CULong -> CULong -> HAddr_t -> HAddr_t -> HSize_t -> HSize_t -> H5FD_t
[h5fd_t'driver_id] :: H5FD_t -> HId_t
[h5fd_t'cls] :: H5FD_t -> Ptr H5FD_class_t
[h5fd_t'fileno] :: H5FD_t -> CULong
[h5fd_t'feature_flags] :: H5FD_t -> CULong
[h5fd_t'maxaddr] :: H5FD_t -> HAddr_t
[h5fd_t'base_addr] :: H5FD_t -> HAddr_t
[h5fd_t'threshold] :: H5FD_t -> HSize_t
[h5fd_t'alignment] :: H5FD_t -> HSize_t

-- | enum for the source of file image callbacks
p'H5FD_class_t'terminate :: Ptr H5FD_class_t -> Ptr (FunPtr (IO HErr_t))
p'H5FD_class_t'sb_size :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> IO HSize_t))
newtype H5FD_file_image_op_t
H5FD_file_image_op_t :: Word32 -> H5FD_file_image_op_t
p'H5FD_class_t'sb_encode :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> OutArray CChar -> Out CUChar -> IO HErr_t))
h5fd_FILE_IMAGE_OP_NO_OP :: H5FD_file_image_op_t
p'H5FD_class_t'sb_decode :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> CString -> In CUChar -> IO HErr_t))
h5fd_FILE_IMAGE_OP_PROPERTY_LIST_SET :: H5FD_file_image_op_t
h5fd_FILE_IMAGE_OP_PROPERTY_LIST_COPY :: H5FD_file_image_op_t
p'H5FD_class_t'fapl_size :: Ptr H5FD_class_t -> Ptr CSize
h5fd_FILE_IMAGE_OP_PROPERTY_LIST_GET :: H5FD_file_image_op_t
p'H5FD_t'driver_id :: Ptr H5FD_t -> Ptr HId_t
h5fd_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE :: H5FD_file_image_op_t
p'H5FD_class_t'fapl_get :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> IO (Ptr ())))
h5fd_FILE_IMAGE_OP_FILE_OPEN :: H5FD_file_image_op_t
p'H5FD_t'cls :: Ptr H5FD_t -> Ptr (Ptr H5FD_class_t)
h5fd_FILE_IMAGE_OP_FILE_RESIZE :: H5FD_file_image_op_t
p'H5FD_class_t'fapl_copy :: Ptr H5FD_class_t -> Ptr (FunPtr (Ptr () -> IO (Ptr ())))
h5fd_FILE_IMAGE_OP_FILE_CLOSE :: H5FD_file_image_op_t
p'H5FD_t'fileno :: Ptr H5FD_t -> Ptr CULong

-- | TODO: wrap this. not tackling it now, because there are a lot of
--   pointer types to pin down.
p'H5FD_class_t'fapl_free :: Ptr H5FD_class_t -> Ptr (FunPtr (Ptr () -> IO HErr_t))
p'H5FD_t'feature_flags :: Ptr H5FD_t -> Ptr CULong
data H5FD_file_image_callbacks_t
H5FD_file_image_callbacks_t :: H5FD_file_image_callbacks_t
p'H5FD_class_t'dxpl_size :: Ptr H5FD_class_t -> Ptr CSize
p'H5FD_t'maxaddr :: Ptr H5FD_t -> Ptr HAddr_t
p'H5FD_class_t'dxpl_copy :: Ptr H5FD_class_t -> Ptr (FunPtr (Ptr () -> IO (Ptr ())))
p'H5FD_t'base_addr :: Ptr H5FD_t -> Ptr HAddr_t
p'H5FD_class_t'dxpl_free :: Ptr H5FD_class_t -> Ptr (FunPtr (Ptr () -> IO HErr_t))
p'H5FD_t'threshold :: Ptr H5FD_t -> Ptr HSize_t
p'H5FD_class_t'open :: Ptr H5FD_class_t -> Ptr (FunPtr (CString -> CUInt -> HId_t -> HAddr_t -> IO (Ptr H5FD_t)))
p'H5FD_t'alignment :: Ptr H5FD_t -> Ptr HSize_t
p'H5FD_class_t'close :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> IO HErr_t))
p'H5FD_class_t'cmp :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> In H5FD_t -> IO CInt))
p'H5FD_class_t'query :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> Ptr CULong -> IO HErr_t))
p'H5FD_class_t'get_type_map :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> Out H5FD_mem_t -> IO HErr_t))
p'H5FD_class_t'alloc :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HSize_t -> IO HAddr_t))

-- | Registers a new file driver as a member of the virtual file driver
--   class. Certain fields of the class struct are required and that is
--   checked here so it doesn't have to be checked every time the field is
--   accessed.
--   
--   On success, returns a file driver ID which is good until the library
--   is closed or the driver is unregistered. On failure, returns a
--   negative value.
--   
--   <pre>
--   hid_t H5FDregister(const H5FD_class_t *cls);
--   </pre>
p'H5FD_class_t'free :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> HSize_t -> IO HErr_t))
p'H5FD_class_t'get_eoa :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t))
p'H5FD_class_t'set_eoa :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> HAddr_t))
p'H5FD_class_t'get_eof :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t))
p'H5FD_class_t'get_handle :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> HId_t -> Out (Ptr ()) -> IO HErr_t))
h5fd_register :: In H5FD_class_t -> IO HId_t
p'H5FD_class_t'read :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> OutArray () -> IO HErr_t))
p_H5FDregister :: FunPtr (In H5FD_class_t -> IO HId_t)

-- | Removes a driver ID from the library. This in no way affects file
--   access property lists which have been defined to use this driver or
--   files which are already opened under this driver.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDunregister(hid_t driver_id);
--   </pre>
p'H5FD_class_t'write :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> InArray () -> IO HErr_t))
p'H5FD_class_t'flush :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> HId_t -> CUInt -> IO HErr_t))
p'H5FD_class_t'truncate :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> HId_t -> HBool_t -> IO HErr_t))
p'H5FD_class_t'lock :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> HBool_t -> IO HErr_t))
h5fd_unregister :: HId_t -> IO HErr_t
p'H5FD_class_t'unlock :: Ptr H5FD_class_t -> Ptr (FunPtr (In H5FD_t -> IO HErr_t))
p_H5FDunregister :: FunPtr (HId_t -> IO HErr_t)

-- | Opens a file named <tt>name</tt> for the type(s) of access described
--   by the bit vector <tt>flags</tt> according to a file access property
--   list <tt>fapl_id</tt> (which may be the constant
--   <tt>h5p_DEFAULT</tt>). The file should expect to handle format
--   addresses in the range [0, <tt>maxaddr</tt>] (if <tt>maxaddr</tt> is
--   <a>hADDR_UNDEF</a> then the caller doesn't care about the address
--   range).
--   
--   Possible values for the <tt>flags</tt> bits are:
--   
--   <ul>
--   <li><i><a>h5f_ACC_RDWR</a></i> Open the file for read and write
--   access. If this bit is not set then open the file for read only
--   access. It is permissible to open a file for read and write access
--   when only read access is requested by the library (the library will
--   never attempt to write to a file which it opened with only read
--   access).</li>
--   <li><i><a>h5f_ACC_CREAT</a></i> Create the file if it doesn't already
--   exist. However, see <a>h5f_ACC_EXCL</a> below.</li>
--   <li><i><a>h5f_ACC_TRUNC</a></i> Truncate the file if it already
--   exists. This is equivalent to deleting the file and then creating a
--   new empty file.</li>
--   <li><i><a>h5f_ACC_EXCL</a></i> When used with <a>h5f_ACC_CREAT</a>, if
--   the file already exists then the open should fail. Note that this is
--   unsupported/broken with some file drivers (e.g., sec2 across nfs) and
--   will contain a race condition when used to perform file locking.</li>
--   </ul>
--   
--   The <tt>maxaddr</tt> is the maximum address which will be requested by
--   the library during an allocation operation. Usually this is the same
--   value as the <tt>maxaddr</tt> field of the class structure, but it can
--   be smaller if the driver is being used under some other driver.
--   
--   Note that when the driver <tt>open</tt> callback gets control that the
--   public part of the file struct (the <a>H5FD_t</a> part) will be
--   incomplete and will be filled in after that callback returns.
--   
--   On success, returns a pointer to a new file driver struct. On failure,
--   returns <a>nullPtr</a>.
--   
--   <pre>
--   H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id,
--          haddr_t maxaddr);
--   </pre>
p'H5FD_class_t'fl_map :: Ptr H5FD_class_t -> Ptr H5FD_mem_t
h5fd_open :: CString -> CUInt -> HId_t -> HAddr_t -> IO (Ptr H5FD_t)
p_H5FDopen :: FunPtr (CString -> CUInt -> HId_t -> HAddr_t -> IO (Ptr H5FD_t))

-- | Closes the file by calling the driver <tt>close</tt> callback, which
--   should free all driver-private data and free the file struct. Note
--   that the public part of the file struct (the <a>H5FD_t</a> part) will
--   be all zero during the driver close callback like during the
--   <tt>open</tt> callback.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDclose(H5FD_t *file);
--   </pre>
h5fd_close :: In H5FD_t -> IO HErr_t
p_H5FDclose :: FunPtr (In H5FD_t -> IO HErr_t)

-- | Compare the keys of two files using the file driver callback if the
--   files belong to the same driver, otherwise sort the files by driver
--   class pointer value.
--   
--   Returns an integer greater than, less than, or equal to zero,
--   indicating the corresponding ordering.
--   
--   Must never fail. If both file handles are invalid then they compare
--   equal. If one file handle is invalid then it compares less than the
--   other. If both files belong to the same driver and the driver doesn't
--   provide a comparison callback then the file pointers themselves are
--   compared.
--   
--   <pre>
--   int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2);
--   </pre>
h5fd_cmp :: In H5FD_t -> In H5FD_t -> IO CInt
p_H5FDcmp :: FunPtr (In H5FD_t -> In H5FD_t -> IO CInt)

-- | Query a VFL driver for its feature flags. (listed in
--   <a>Bindings.HDF5.Raw.H5FD</a>)
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   int H5FDquery(const H5FD_t *f, unsigned long *flags);
--   </pre>
h5fd_query :: In H5FD_t -> Out CULong -> IO CInt
p_H5FDquery :: FunPtr (In H5FD_t -> Out CULong -> IO CInt)

-- | Allocates <tt>size</tt> bytes of memory from the <tt>file</tt>. The
--   memory will be used according to the allocation class 'type'. First we
--   try to satisfy the request from one of the free lists, according to
--   the free list map provided by the driver. The free list array has one
--   entry for each request type and the value of that array element can be
--   one of four possibilities:
--   
--   <ul>
--   <li>It can be the constant <a>h5fd_MEM_DEFAULT</a> (or zero) which
--   indicates that the identity mapping is used. In other words, the
--   request type maps to its own free list.</li>
--   <li>It can be the request type itself, which has the same effect as
--   the <a>h5fd_MEM_DEFAULT</a> value above.</li>
--   <li>It can be the ID for another request type, which indicates that
--   the free list for the specified type should be used instead.</li>
--   <li>It can be the constant <a>h5fd_MEM_NOLIST</a> which means that no
--   free list should be used for this type of request.</li>
--   </ul>
--   
--   If the request cannot be satisfied from a free list then either the
--   driver's <tt>alloc</tt> callback is invoked (if one was supplied) or
--   the end-of-address marker is extended. The <tt>alloc</tt> callback is
--   always called with the same arguments as the <a>h5fd_alloc</a>.
--   
--   Returns the format address of the new file memory, or the undefined
--   address <a>hADDR_UNDEF</a> on failure.
--   
--   <pre>
--   haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
--   </pre>
h5fd_alloc :: In H5FD_t -> H5FD_mem_t -> HId_t -> HSize_t -> IO HAddr_t
p_H5FDalloc :: FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HSize_t -> IO HAddr_t)

-- | Frees format addresses starting with <tt>addr</tt> and continuing for
--   <tt>size</tt> bytes in the file <tt>file</tt>. The type of space being
--   freed is specified by 'type', which is mapped to a free list as
--   described for the <a>h5fd_alloc</a> function above. If the request
--   doesn't map to a free list then either the application <tt>free</tt>
--   callback is invoked (if defined) or the memory is leaked.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
--                          haddr_t addr, hsize_t size);
--   </pre>
h5fd_free :: In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> HSize_t -> IO HErr_t
p_H5FDfree :: FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> HSize_t -> IO HErr_t)

-- | Returns the address of the first byte after the last allocated memory
--   in the file, or <a>hADDR_UNDEF</a> on failure.
--   
--   <pre>
--   haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type);
--   </pre>
h5fd_get_eoa :: In H5FD_t -> H5FD_mem_t -> IO HAddr_t
p_H5FDget_eoa :: FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t)

-- | Set the end-of-address marker for the file. The <tt>addr</tt> is the
--   address of the first byte past the last allocated byte of the file.
--   This function is called from two places:
--   
--   <ol>
--   <li>It is called after an existing file is opened in order to
--   "allocate" enough space to read the superblock and then to "allocate"
--   the entire hdf5 file based on the contents of the superblock.</li>
--   <li>It is called during file memory allocation if the allocation
--   request cannot be satisfied from the free list and the driver didn't
--   supply an allocation callback.</li>
--   </ol>
--   
--   Returns non-negative on success, or negative on failure. If the
--   operation fails, it will do so with no side-effects.
--   
--   <pre>
--   herr_t H5FDset_eoa(H5FD_t *file, H5FD_mem_t type, haddr_t eoa);
--   </pre>
h5fd_set_eoa :: In H5FD_t -> H5FD_mem_t -> HAddr_t -> IO HErr_t
p_H5FDset_eoa :: FunPtr (In H5FD_t -> H5FD_mem_t -> HAddr_t -> IO HErr_t)

-- | Returns the end-of-file address, which is the greater of the
--   end-of-format address and the actual EOF marker. This function is
--   called after an existing file is opened in order for the library to
--   learn the true size of the underlying file and to determine whether
--   the hdf5 data has been truncated.
--   
--   It is also used when a file is first opened to learn whether the file
--   is empty or not.
--   
--   It is permissible for the driver to return the maximum address for the
--   file size if the file is not empty.
--   
--   On failure, returns <a>hADDR_UNDEF</a>
--   
--   Returns a pointer to the file handle of low-level virtual file driver.
--   
--   returns non-negative on success, negative otherwise.
--   
--   <pre>
--   herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle);
--   </pre>
h5fd_get_vfd_handle :: In H5FD_t -> HId_t -> Out (Ptr a) -> IO HErr_t
p_H5FDget_vfd_handle :: FunPtr (In H5FD_t -> HId_t -> Out (Ptr a) -> IO HErr_t)

-- | Reads <tt>size</tt> bytes from <tt>file</tt> beginning at address
--   <tt>addr</tt> according to the data transfer property list
--   <tt>dxpl_id</tt> (which may be the constant <tt>h5p_DEFAULT</tt>). The
--   result is written into the buffer <tt>buf</tt>.
--   
--   Returns non-negative on success. The read result is written into the
--   <tt>buf</tt> buffer which should be allocated by the caller.
--   
--   On failure, returns a negative value and the contents of <tt>buf</tt>
--   is undefined.
--   
--   <pre>
--   herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
--          haddr_t addr, size_t size, void *buf/*out*/);
--   </pre>
h5fd_read :: In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> OutArray a -> IO HErr_t
p_H5FDread :: FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> OutArray a -> IO HErr_t)

-- | Writes <tt>size</tt> bytes to <tt>file</tt> beginning at address
--   <tt>addr</tt> according to the data transfer property list
--   <tt>dxpl_id</tt> (which may be the constant <tt>h5p_DEFAULT</tt>). The
--   bytes to be written come from the buffer <tt>buf</tt>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
--          haddr_t addr, size_t size, const void *buf);
--   </pre>
h5fd_write :: In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> InArray a -> IO HErr_t
p_H5FDwrite :: FunPtr (In H5FD_t -> H5FD_mem_t -> HId_t -> HAddr_t -> CSize -> InArray a -> IO HErr_t)

-- | Notify driver to flush all cached data. If the driver has no flush
--   method then nothing happens.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, unsigned closing);
--   </pre>
h5fd_flush :: In H5FD_t -> HId_t -> CUInt -> IO HErr_t
p_H5FDflush :: FunPtr (In H5FD_t -> HId_t -> CUInt -> IO HErr_t)

-- | Notify driver to truncate the file back to the allocated size.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
--   </pre>
h5fd_truncate :: In H5FD_t -> HId_t -> HBool_t -> IO HErr_t
p_H5FDtruncate :: FunPtr (In H5FD_t -> HId_t -> HBool_t -> IO HErr_t)

-- | Map "extensible array" header blocks to <tt>ohdr</tt> type file
--   memory, since its a fair amount of work to add a new kind of file
--   memory and they are similar enough to object headers and probably too
--   minor to deserve their own type.
--   
--   Map "extensible array" index blocks to <tt>ohdr</tt> type file memory,
--   since they are similar to extensible array header blocks.
--   
--   Map "extensible array" super blocks to <tt>btree</tt> type file
--   memory, since they are similar enough to B-tree nodes.
--   
--   Map "extensible array" data blocks &amp; pages to <tt>lheap</tt> type
--   file memory, since they are similar enough to local heap info.
h5fd_MEM_EARRAY_HDR :: H5F_mem_t
h5fd_MEM_EARRAY_IBLOCK :: H5F_mem_t
h5fd_MEM_EARRAY_SBLOCK :: H5F_mem_t
h5fd_MEM_EARRAY_DBLOCK :: H5F_mem_t
h5fd_MEM_EARRAY_DBLK_PAGE :: H5F_mem_t

-- | Map "fixed array" header blocks to <tt>ohdr</tt> type file memory,
--   since its a fair amount of work to add a new kind of file memory and
--   they are similar enough to object headers and probably too minor to
--   deserve their own type.
--   
--   Map "fixed array" data blocks &amp; pages to <tt>lheap</tt> type file
--   memory, since they are similar enough to local heap info.
h5fd_MEM_FARRAY_HDR :: H5F_mem_t
h5fd_MEM_FARRAY_DBLOCK :: H5F_mem_t
h5fd_MEM_FARRAY_DBLK_PAGE :: H5F_mem_t

-- | Defining <tt>H5FD_FEAT_SUPPORTS_SWMR_IO</tt> for a VFL driver means
--   that the driver supports the single-writer<i>multiple-readers I</i>O
--   pattern.
h5fd_FEAT_SUPPORTS_SWMR_IO :: Num a => a
h5fd_lock :: In H5FD_t -> HBool_t -> IO HErr_t
p_H5FDlock :: FunPtr (In H5FD_t -> HBool_t -> IO HErr_t)
h5fd_unlock :: In H5FD_t -> IO HErr_t
p_H5FDunlock :: FunPtr (In H5FD_t -> IO HErr_t)
h5fd_get_eof :: In H5FD_t -> H5FD_mem_t -> IO HAddr_t
p_H5FDget_eof :: FunPtr (In H5FD_t -> H5FD_mem_t -> IO HAddr_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5FD.H5FD_class_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5FD.H5FD_free_t
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5FD.H5FD_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.H5FD_class_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.H5FD_file_image_op_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.H5FD_free_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5FD.H5FD_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.H5FD_class_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.H5FD_file_image_op_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.H5FD_free_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5FD.H5FD_t

module Bindings.HDF5.Raw.H5P
h5p_ROOT :: HId_t
h5p_OBJECT_CREATE :: HId_t
h5p_FILE_CREATE :: HId_t
h5p_FILE_ACCESS :: HId_t
h5p_DATASET_CREATE :: HId_t
h5p_DATASET_ACCESS :: HId_t
h5p_DATASET_XFER :: HId_t
h5p_FILE_MOUNT :: HId_t
h5p_GROUP_CREATE :: HId_t
h5p_GROUP_ACCESS :: HId_t
h5p_DATATYPE_CREATE :: HId_t
h5p_DATATYPE_ACCESS :: HId_t
h5p_STRING_CREATE :: HId_t
h5p_ATTRIBUTE_CREATE :: HId_t
h5p_OBJECT_COPY :: HId_t
h5p_LINK_CREATE :: HId_t
h5p_LINK_ACCESS :: HId_t
h5p_FILE_CREATE_DEFAULT :: HId_t
h5p_FILE_ACCESS_DEFAULT :: HId_t
h5p_DATASET_CREATE_DEFAULT :: HId_t
h5p_DATASET_ACCESS_DEFAULT :: HId_t
h5p_DATASET_XFER_DEFAULT :: HId_t
h5p_FILE_MOUNT_DEFAULT :: HId_t
h5p_GROUP_CREATE_DEFAULT :: HId_t
h5p_GROUP_ACCESS_DEFAULT :: HId_t
h5p_DATATYPE_CREATE_DEFAULT :: HId_t
h5p_DATATYPE_ACCESS_DEFAULT :: HId_t
h5p_ATTRIBUTE_CREATE_DEFAULT :: HId_t
h5p_OBJECT_COPY_DEFAULT :: HId_t
h5p_LINK_CREATE_DEFAULT :: HId_t
h5p_LINK_ACCESS_DEFAULT :: HId_t

-- | Default value for all property list classes
h5p_DEFAULT :: HId_t
h5p_CRT_ORDER_TRACKED :: Num a => a
h5p_CRT_ORDER_INDEXED :: Num a => a

-- | <pre>
--   typedef herr_t (*H5P_cls_create_func_t)(hid_t prop_id, void *create_data);
--   </pre>
type H5P_cls_create_func_t a = FunPtr HId_t -> Ptr a -> IO HErr_t

-- | <pre>
--   typedef herr_t (*H5P_cls_copy_func_t)(hid_t new_prop_id, hid_t old_prop_id,
--                                         void *copy_data);
--   </pre>
type H5P_cls_copy_func_t a = FunPtr HId_t -> HId_t -> Ptr a -> IO HErr_t

-- | <pre>
--   typedef herr_t (*H5P_cls_close_func_t)(hid_t prop_id, void *close_data);
--   </pre>
type H5P_cls_close_func_t a = FunPtr HId_t -> Ptr a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> prop_id :: <a>HId_t</a> </tt></i> The ID of the property
--   list being created.</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being modified.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> initial_value :: <a>InOut</a> a </tt></i> The initial
--   value for the property being created. (The 'default' value passed to
--   <a>h5p_register2</a>)</li>
--   </ul>
--   
--   <pre>
--   typedef herr_t (*H5P_prp_create_func_t)(hid_t prop_id, const char *name,
--           size_t size, void *initial_value);
--   </pre>
type H5P_prp_create_func_t a = FunPtr CString -> CSize -> InOut a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> prop_id :: <a>HId_t</a> </tt></i> The ID of the property
--   list being modified.</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being modified.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> new_value :: <a>InOut</a> a </tt></i> The value being set
--   for the property.</li>
--   </ul>
--   
--   The <tt>set</tt> routine may modify the value to be set and those
--   changes will be stored as the value of the property. If the
--   <tt>set</tt> routine returns a negative value, the new property value
--   is not copied into the property and the property list set routine
--   returns an error value.
type H5P_prp_set_func_t a = FunPtr HId_t -> CString -> CSize -> InOut a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> prop_id :: <a>HId_t</a> </tt></i> The ID of the property
--   list being queried.</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being queried.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> value :: <a>InOut</a> a </tt></i> The value being
--   retrieved for the property.</li>
--   </ul>
--   
--   The <tt>get</tt> routine may modify the value to be retrieved and
--   those changes will be returned to the calling function. If the
--   <tt>get</tt> routine returns a negative value, the property value is
--   returned and the property list get routine returns an error value.
--   
--   <pre>
--   typedef herr_t (*H5P_prp_get_func_t)(hid_t prop_id, const char *name,
--       size_t size, void *value);
--   </pre>
type H5P_prp_get_func_t a = FunPtr HId_t -> CString -> CSize -> InOut a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> prop_id :: <a>HId_t</a> </tt></i> The ID of the property
--   list the property is deleted from.</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being deleted.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> value :: <a>InOut</a> a </tt></i> The value of the
--   property being deleted.</li>
--   </ul>
--   
--   The <tt>delete</tt> routine may modify the value passed in, but the
--   value is not used by the library when the <tt>delete</tt> routine
--   returns. If the <tt>delete</tt> routine returns a negative value, the
--   property list deletion routine returns an error value but the property
--   is still deleted.
--   
--   <pre>
--   typedef herr_t (*H5P_prp_del_func_t)(hid_t prop_id, const char *name,
--       size_t size, void *value);
--   </pre>
type H5P_prp_delete_func_t a = FunPtr HId_t -> CString -> CSize -> InOut a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being copied.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> value :: <a>InOut</a> a </tt></i> The value of the
--   property being copied.</li>
--   </ul>
--   
--   The <tt>copy</tt> routine may modify the value to be copied and those
--   changes will be stored as the value of the property. If the
--   <tt>copy</tt> routine returns a negative value, the new property value
--   is not copied into the property and the property list copy routine
--   returns an error value.
--   
--   <pre>
--   typedef herr_t (*H5P_prp_copy_func_t)(const char *name, size_t size,
--       void *value);
--   </pre>
type H5P_prp_copy_func_t a = FunPtr CString -> CSize -> InOut a -> IO HErr_t

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> value1 :: <a>In</a> a </tt></i> The value of the first
--   property being compared.</li>
--   <li><i><tt> value2 :: <a>In</a> a </tt></i> The value of the second
--   property being compared.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   </ul>
--   
--   The <a>compare</a> routine may not modify the values to be compared.
--   The <a>compare</a> routine should return a positive value if
--   <tt>value1</tt> is greater than <tt>value2</tt>, a negative value if
--   <tt>value2</tt> is greater than <tt>value1</tt> and zero if
--   <tt>value1</tt> and <tt>value2</tt> are equal.
--   
--   <pre>
--   typedef int (*H5P_prp_compare_func_t)( void *value1, void *value2,
--       size_t size);
--   </pre>
type H5P_prp_compare_func_t a = FunPtr In a -> In a -> CSize -> IO CInt

-- | Parameters:
--   
--   <ul>
--   <li><i><tt> name :: <a>CString</a> </tt></i> The name of the property
--   being closed.</li>
--   <li><i><tt> size :: <a>CSize</a> </tt></i> The size of the property
--   value</li>
--   <li><i><tt> value :: <a>In</a> a </tt></i> The value of the property
--   being closed.</li>
--   </ul>
--   
--   <pre>
--   typedef herr_t (*H5P_prp_close_func_t)(const char *name, size_t size,
--       void *value);
--   </pre>
type H5P_prp_close_func_t a = FunPtr CString -> CSize -> InOut a -> IO HErr_t

-- | Type of operator callback for <a>h5p_iterate</a>.
--   
--   The operation receives the property list or class identifier for the
--   object being iterated over, <a>id</a>, the name of the current
--   property within the object, <tt>name</tt>, and the pointer to the
--   operator data passed in to H5Piterate, <tt>iter_data</tt>.
--   
--   The return values from an operator are:
--   
--   <ul>
--   <li>Zero causes the iterator to continue, returning zero when all
--   properties have been processed.</li>
--   <li>Positive causes the iterator to immediately return that positive
--   value, indicating short-circuit success. The iterator can be restarted
--   at the index of the next property.</li>
--   <li>Negative causes the iterator to immediately return that value,
--   indicating failure. The iterator can be restarted at the index of the
--   next property.</li>
--   </ul>
--   
--   <pre>
--   typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data);
--   </pre>
type H5P_iterate_t a = FunPtr HId_t -> CString -> InOut a -> IO HErr_t

-- | Actual IO mode property
newtype H5D_mpio_actual_chunk_opt_mode_t
H5D_mpio_actual_chunk_opt_mode_t :: Word32 -> H5D_mpio_actual_chunk_opt_mode_t

-- | The default value, H5D_MPIO_NO_CHUNK_OPTIMIZATION, is used for all I/O
--   operations that do not use chunk optimizations, including
--   non-collective I<i>O and contiguous collective I</i>O.
h5d_MPIO_NO_CHUNK_OPTIMIZATION :: H5D_mpio_actual_chunk_opt_mode_t
h5d_MPIO_LINK_CHUNK :: H5D_mpio_actual_chunk_opt_mode_t
h5d_MPIO_MULTI_CHUNK :: H5D_mpio_actual_chunk_opt_mode_t

-- | The following four values are conveniently defined as a bit field so
--   that we can switch from the default to indpendent or collective and
--   then to mixed without having to check the original value.
newtype H5D_mpio_actual_io_mode_t
H5D_mpio_actual_io_mode_t :: Word32 -> H5D_mpio_actual_io_mode_t

-- | NO_COLLECTIVE means that either collective I/O wasn't requested or
--   that no I/O took place.
h5d_MPIO_NO_COLLECTIVE :: H5D_mpio_actual_io_mode_t

-- | CHUNK_INDEPENDENT means that collective I/O was requested, but the
--   chunk optimization scheme chose independent I/O for each chunk.
h5d_MPIO_CHUNK_INDEPENDENT :: H5D_mpio_actual_io_mode_t
h5d_MPIO_CHUNK_COLLECTIVE :: H5D_mpio_actual_io_mode_t
h5d_MPIO_CHUNK_MIXED :: H5D_mpio_actual_io_mode_t

-- | The contiguous case is separate from the bit field.
h5d_MPIO_CONTIGUOUS_COLLECTIVE :: H5D_mpio_actual_io_mode_t

-- | Broken collective IO property
newtype H5D_mpio_no_collective_cause_t
H5D_mpio_no_collective_cause_t :: Word32 -> H5D_mpio_no_collective_cause_t
h5d_MPIO_COLLECTIVE :: H5D_mpio_no_collective_cause_t
h5d_MPIO_SET_INDEPENDENT :: H5D_mpio_no_collective_cause_t
h5d_MPIO_DATATYPE_CONVERSION :: H5D_mpio_no_collective_cause_t
h5d_MPIO_DATA_TRANSFORMS :: H5D_mpio_no_collective_cause_t
h5d_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES :: H5D_mpio_no_collective_cause_t
h5d_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET :: H5D_mpio_no_collective_cause_t

-- | Create a new property list class. Allocates memory and attaches a
--   class to the property list class hierarchy.
--   
--   Parameters
--   
--   <ul>
--   <li><i><tt> parent :: <a>HId_t</a> </tt></i> Property list class ID of
--   parent class</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of class we are
--   creating</li>
--   <li><i><tt> cls_create :: <a>H5P_cls_create_func_t</a> a </tt></i> The
--   callback function to call when each property list in this class is
--   created.</li>
--   <li><i><tt> create_data :: <a>InOut</a> a </tt></i> Pointer to user
--   data to pass along to class creation callback.</li>
--   <li><i><tt> cls_copy :: <a>H5P_cls_copy_func_t</a> b </tt></i> The
--   callback function to call when each property list in this class is
--   copied.</li>
--   <li><i><tt> copy_data :: <a>InOut</a> b </tt></i> Pointer to user data
--   to pass along to class copy callback.</li>
--   <li><i><tt> cls_close :: <a>H5P_cls_close_func_t</a> c </tt></i> The
--   callback function to call when each property list in this class is
--   closed.</li>
--   <li><i><tt> close_data :: <a>InOut</a> c </tt></i> Pointer to user
--   data to pass along to class close callback.</li>
--   </ul>
--   
--   Returns a valid property list class ID on success, NULL on failure.
--   
--   <pre>
--   hid_t H5Pcreate_class(hid_t parent, const char *name,
--       H5P_cls_create_func_t cls_create, void *create_data,
--       H5P_cls_copy_func_t cls_copy, void *copy_data,
--       H5P_cls_close_func_t cls_close, void *close_data);
--   </pre>
h5p_create_class :: HId_t -> CString -> H5P_cls_create_func_t a -> Ptr a -> H5P_cls_copy_func_t b -> Ptr b -> H5P_cls_close_func_t c -> Ptr c -> IO HId_t
p_H5Pcreate_class :: FunPtr (HId_t -> CString -> H5P_cls_create_func_t a -> Ptr a -> H5P_cls_copy_func_t b -> Ptr b -> H5P_cls_close_func_t c -> Ptr c -> IO HId_t)

-- | This routine retrieves the name of a generic property list class. The
--   pointer to the name must be <tt>free</tt>d by the user for successful
--   calls.
--   
--   Parameters
--   
--   <ul>
--   <li><i><tt> pclass_id :: <a>HId_t</a> </tt></i> Property class to
--   query</li>
--   </ul>
--   
--   On success, returns a pointer to a malloc'ed string containing the
--   class name On failure, returns NULL.
--   
--   <pre>
--   char *H5Pget_class_name(hid_t pclass_id);
--   </pre>
h5p_get_class_name :: HId_t -> IO CString
p_H5Pget_class_name :: FunPtr (HId_t -> IO CString)

-- | Routine to create a new property list of a property list class.
--   
--   Creates a property list of a given class. If a <tt>create</tt>
--   callback exists for the property list class, it is called before the
--   property list is passed back to the user. If <tt>create</tt> callbacks
--   exist for any individual properties in the property list, they are
--   called before the class <tt>create</tt> callback.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> cls_id :: <a>HId_t</a> </tt></i> Property list class
--   create list from</li>
--   </ul>
--   
--   Returns a valid property list ID on success, a negative value on
--   failure.
--   
--   <pre>
--   hid_t H5Pcreate(hid_t cls_id);
--   </pre>
h5p_create :: HId_t -> IO HId_t
p_H5Pcreate :: FunPtr (HId_t -> IO HId_t)

-- | Routine to register a new property in a property list class.
--   
--   Registers a new property with a property list class. The property will
--   exist in all property list objects of that class after this routine is
--   finished. The name of the property must not already exist. The default
--   property value must be provided and all new property lists created
--   with this property will have the property value set to the default
--   provided. Any of the callback routines may be set to NULL if they are
--   not needed.
--   
--   Zero-sized properties are allowed and do not store any data in the
--   property list. These may be used as flags to indicate the presence or
--   absence of a particular piece of information. The 'default' pointer
--   for a zero-sized property may be set to NULL. The property
--   <tt>create</tt> &amp; <tt>close</tt> callbacks are called for
--   zero-sized properties, but the <tt>set</tt> and <tt>get</tt> callbacks
--   are never called.
--   
--   The <tt>create</tt> callback is called when a new property list with
--   this property is being created. <a>H5P_prp_create_func_t</a> is
--   defined as:
--   
--   The <tt>create</tt> routine may modify the value to be set and those
--   changes will be stored as the initial value of the property. If the
--   <tt>create</tt> routine returns a negative value, the new property
--   value is not copied into the property and the property list creation
--   routine returns an error value.
--   
--   The <tt>set</tt> callback is called before a new value is copied into
--   the property. The <tt>set</tt> routine may modify the value to be set
--   and those changes will be stored as the value of the property. If the
--   <tt>set</tt> routine returns a negative value, the new property value
--   is not copied into the property and the property list set routine
--   returns an error value.
--   
--   The <tt>get</tt> callback is called before a value is retrieved from
--   the property. The <tt>get</tt> routine may modify the value to be
--   retrieved and those changes will be returned to the calling function.
--   If the <tt>get</tt> routine returns a negative value, the property
--   value is returned and the property list get routine returns an error
--   value.
--   
--   The <tt>delete</tt> callback is called when a property is deleted from
--   a property list. The <tt>delete</tt> routine may modify the value
--   passed in, but the value is not used by the library when the
--   <tt>delete</tt> routine returns. If the <tt>delete</tt> routine
--   returns a negative value, the property list deletion routine returns
--   an error value but the property is still deleted.
--   
--   The <tt>copy</tt> callback is called when a property list with this
--   property is copied. The <tt>copy</tt> routine may modify the value to
--   be copied and those changes will be stored as the value of the
--   property. If the <tt>copy</tt> routine returns a negative value, the
--   new property value is not copied into the property and the property
--   list copy routine returns an error value.
--   
--   The <a>compare</a> callback is called when a property list with this
--   property is compared to another property list. The <a>compare</a>
--   routine may not modify the values to be compared. The <a>compare</a>
--   routine should return a positive value if <tt>value1</tt> is greater
--   than <tt>value2</tt>, a negative value if <tt>value2</tt> is greater
--   than <tt>value1</tt> and zero if <tt>value1</tt> and <tt>value2</tt>
--   are equal.
--   
--   The <tt>close</tt> callback is called when a property list with this
--   property is being destroyed. The <tt>close</tt> routine may modify the
--   value passed in, but the value is not used by the library when the
--   <tt>close</tt> routine returns. If the <tt>close</tt> routine returns
--   a negative value, the property list close routine returns an error
--   value but the property list is still closed.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> class :: HId_t </tt></i> IN: Property list class to
--   close</li>
--   <li><i><tt> name :: CString </tt></i> IN: Name of property to
--   register</li>
--   <li><i><tt> size :: CSize </tt></i> IN: Size of property in bytes</li>
--   <li><i><tt> def_value :: In a </tt></i> IN: Pointer to buffer
--   containing default value for property in newly created property
--   lists</li>
--   <li><i><tt> prp_create :: H5P_prp_create_func_t a </tt></i> IN:
--   Function pointer to property creation callback</li>
--   <li><i><tt> prp_set :: H5P_prp_set_func_t a </tt></i> IN: Function
--   pointer to property set callback</li>
--   <li><i><tt> prp_get :: H5P_prp_get_func_t a </tt></i> IN: Function
--   pointer to property get callback</li>
--   <li><i><tt> prp_delete :: H5P_prp_delete_func_t a </tt></i> IN:
--   Function pointer to property delete callback</li>
--   <li><i><tt> prp_copy :: H5P_prp_copy_func_t a </tt></i> IN: Function
--   pointer to property copy callback</li>
--   <li><i><tt> prp_cmp :: H5P_prp_compare_func_t a </tt></i> IN: Function
--   pointer to property compare callback</li>
--   <li><i><tt> prp_close :: H5P_prp_close_func_t a </tt></i> IN: Function
--   pointer to property close callback</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   COMMENTS, BUGS, ASSUMPTIONS:
--   
--   The <tt>set</tt> callback function may be useful to range check the
--   value being set for the property or may perform some
--   tranformation/translation of the value set. The <tt>get</tt> callback
--   would then [probably] reverse the transformation, etc. A single
--   <tt>get</tt> or <tt>set</tt> callback could handle multiple properties
--   by performing different actions based on the property name or other
--   properties in the property list.
--   
--   I would like to say "the property list is not closed" when a
--   <tt>close</tt> routine fails, but I don't think that's possible due to
--   other properties in the list being successfully closed &amp; removed
--   from the property list. I suppose that it would be possible to just
--   remove the properties which have successful <tt>close</tt> callbacks,
--   but I'm not happy with the ramifications of a mangled, un-closable
--   property list hanging around... Any comments? -QAK
--   
--   <pre>
--   herr_t H5Pregister2(hid_t cls_id, const char *name, size_t size,
--       void *def_value, H5P_prp_create_func_t prp_create,
--       H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
--       H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
--       H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
--   </pre>
h5p_register2 :: HId_t -> CString -> CSize -> In a -> H5P_prp_create_func_t a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_compare_func_t a -> H5P_prp_close_func_t a -> IO HErr_t
p_H5Pregister2 :: FunPtr (HId_t -> CString -> CSize -> In a -> H5P_prp_create_func_t a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_compare_func_t a -> H5P_prp_close_func_t a -> IO HErr_t)

-- | Routine to insert a new property in a property list.
--   
--   Inserts a temporary property into a property list. The property will
--   exist only in this property list object. The name of the property must
--   not already exist. The value must be provided unless the property is
--   zero- sized. Any of the callback routines may be set to NULL if they
--   are not needed.
--   
--   Zero-sized properties are allowed and do not store any data in the
--   property list. These may be used as flags to indicate the presence or
--   absence of a particular piece of information. The <tt>value</tt>
--   pointer for a zero-sized property may be set to NULL. The property
--   <tt>close</tt> callback is called for zero-sized properties, but the
--   <tt>set</tt> and <tt>get</tt> callbacks are never called.
--   
--   There is no <tt>create</tt> callback routine for temporary property
--   list objects, the initial value is assumed to have any necessary setup
--   already performed on it. Aside from that, the callbacks are the same
--   as for <tt>h5p_register</tt>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pinsert2(hid_t plist_id, const char *name, size_t size,
--       void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
--       H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
--       H5P_prp_compare_func_t prp_cmp, H5P_prp_close_func_t prp_close);
--   </pre>
h5p_insert2 :: HId_t -> CString -> CSize -> In a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_compare_func_t a -> H5P_prp_close_func_t a -> IO HErr_t
p_H5Pinsert2 :: FunPtr (HId_t -> CString -> CSize -> In a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_compare_func_t a -> H5P_prp_close_func_t a -> IO HErr_t)

-- | Routine to set a property's value in a property list.
--   
--   Sets a new value for a property in a property list. The property name
--   must exist or this routine will fail. If there is a <tt>set</tt>
--   callback routine registered for this property, the <tt>value</tt> will
--   be passed to that routine and any changes to the <tt>value</tt> will
--   be used when setting the property value. The information pointed at by
--   the <tt>value</tt> pointer (possibly modified by the <tt>set</tt>
--   callback) is copied into the property list value and may be changed by
--   the application making the H5Pset call without affecting the property
--   value.
--   
--   If the <tt>set</tt> callback routine returns an error, the property
--   value will not be modified. This routine may not be called for
--   zero-sized properties and will return an error in that case.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> Property list to find
--   property in</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to
--   set</li>
--   <li><i><tt> value :: <a>In</a> a </tt></i> Pointer to the value for
--   the property</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset(hid_t plist_id, const char *name, void *value);
--   </pre>
h5p_set :: HId_t -> CString -> In a -> IO HErr_t
p_H5Pset :: FunPtr (HId_t -> CString -> In a -> IO HErr_t)

-- | Routine to query the existence of a property in a property object.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> Property object ID to
--   check</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to check
--   for</li>
--   </ul>
--   
--   <pre>
--   htri_t H5Pexist(hid_t plist_id, const char *name);
--   </pre>
h5p_exist :: HId_t -> CString -> IO HTri_t
p_H5Pexist :: FunPtr (HId_t -> CString -> IO HTri_t)

-- | Routine to query the size of a property in a property list or class.
--   
--   This routine retrieves the size of a property's value in bytes. Zero-
--   sized properties are allowed and return a value of 0. This function
--   works for both property lists and classes.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> ID of property list or class
--   to check</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to
--   query</li>
--   <li><i><tt> size :: <a>Out</a> <a>CSize</a> </tt></i> Size of
--   property</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_size(hid_t id, const char *name, size_t *size);
--   </pre>
h5p_get_size :: HId_t -> CString -> Out CSize -> IO HErr_t
p_H5Pget_size :: FunPtr (HId_t -> CString -> Out CSize -> IO HErr_t)

-- | Routine to query the size of a property in a property list or class.
--   
--   This routine retrieves the number of properties in a property list or
--   class. If a property class ID is given, the number of registered
--   properties in the class is returned in <tt>nprops</tt>. If a property
--   list ID is given, the current number of properties in the list is
--   returned in <tt>nprops</tt>.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id <a>HId_t</a> </tt></i> ID of Property list or class to
--   check</li>
--   <li><i><tt> nprops <a>Out</a> <a>CSize</a> </tt></i> Number of
--   properties in the property object</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_nprops(hid_t id, size_t *nprops);
--   </pre>
h5p_get_nprops :: HId_t -> Out CSize -> IO HErr_t
p_H5Pget_nprops :: FunPtr (HId_t -> Out CSize -> IO HErr_t)

-- | Routine to query the name of a generic property list class
--   
--   This routine retrieves the name of a generic property list class. The
--   pointer to the name must be free'd by the user for successful calls.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> pclass_id :: <a>HId_t</a> </tt></i> Property class to
--   query</li>
--   </ul>
--   
--   Returns a pointer to a malloc'ed string containing the class name, or
--   NULL on failure.
--   
--   <pre>
--   hid_t H5Pget_class(hid_t plist_id);
--   </pre>
h5p_get_class :: HId_t -> IO HId_t
p_H5Pget_class :: FunPtr (HId_t -> IO HId_t)

-- | This routine retrieves an ID for the parent class of a property class.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> pclass_id :: <a>HId_t</a> </tt></i> Property class to
--   query</li>
--   </ul>
--   
--   Returns the ID of the parent class object or NULL on failure.
--   
--   <pre>
--   hid_t H5Pget_class_parent(hid_t pclass_id);
--   </pre>
h5p_get_class_parent :: HId_t -> IO HId_t
p_H5Pget_class_parent :: FunPtr (HId_t -> IO HId_t)

-- | Routine to query the value of a property in a property list.
--   
--   Retrieves a copy of the value for a property in a property list. The
--   property name must exist or this routine will fail. If there is a
--   <tt>get</tt> callback routine registered for this property, the copy
--   of the value of the property will first be passed to that routine and
--   any changes to the copy of the value will be used when returning the
--   property value from this routine.
--   
--   If the <tt>get</tt> callback routine returns an error, <tt>value</tt>
--   will not be modified and this routine will return an error. This
--   routine may not be called for zero-sized properties.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> Property list to
--   check</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to
--   query</li>
--   <li><i><tt> value :: <a>Out</a> a </tt></i> Pointer to the buffer for
--   the property value</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget(hid_t plist_id, const char *name, void * value);
--   </pre>
h5p_get :: HId_t -> CString -> Out a -> IO HErr_t
p_H5Pget :: FunPtr (HId_t -> CString -> Out a -> IO HErr_t)

-- | Determines whether two property lists or two property classes are
--   equal.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id1 :: <a>HId_t</a> </tt></i> Property list or class ID to
--   compare</li>
--   <li><i><tt> id2 :: <a>HId_t</a> </tt></i> Property list or class ID to
--   compare</li>
--   </ul>
--   
--   <pre>
--   htri_t H5Pequal(hid_t id1, hid_t id2);
--   </pre>
h5p_equal :: HId_t -> HId_t -> IO HTri_t
p_H5Pequal :: FunPtr (HId_t -> HId_t -> IO HTri_t)

-- | This routine queries whether a property list is a member of the
--   property list class.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> Property list to
--   query</li>
--   <li><i><tt> pclass_id :: <a>HId_t</a> </tt></i> Property class to
--   query</li>
--   </ul>
--   
--   <pre>
--   htri_t H5Pisa_class(hid_t plist_id, hid_t pclass_id);
--   </pre>
h5p_isa_class :: HId_t -> HId_t -> IO HTri_t
p_H5Pisa_class :: FunPtr (HId_t -> HId_t -> IO HTri_t)

-- | This routine iterates over the properties in the property object
--   specified with ID. The properties in both property lists and classes
--   may be iterated over with this function. For each property in the
--   object, the <tt>iter_data</tt> and some additional information,
--   specified below, are passed to the <tt>iter_func</tt> function. The
--   iteration begins with the <tt>idx</tt> property in the object and the
--   next element to be processed by the operator is returned in
--   <tt>idx</tt>. If <tt>idx</tt> is NULL, then the iterator starts at the
--   first property; since no stopping point is returned in this case, the
--   iterator cannot be restarted if one of the calls to its operator
--   returns non-zero. The <tt>idx</tt> value is 0-based (ie. to start at
--   the "first" property, the <tt>idx</tt> value should be 0).
--   
--   <a>h5p_iterate</a> assumes that the properties in the object
--   identified by ID remains unchanged through the iteration. If the
--   membership changes during the iteration, the function's behavior is
--   undefined.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> id :: <a>HId_t</a> </tt></i> ID of property object to
--   iterate over</li>
--   <li><i><tt> idx :: <a>InOut</a> <a>CInt</a> </tt></i> Index of the
--   property to begin with</li>
--   <li><i><tt> iter_func :: <a>H5P_iterate_t</a> a </tt></i> Function
--   pointer to function to be called with each property iterated
--   over.</li>
--   <li><i><tt> iter_data :: <a>InOut</a> a </tt></i> Pointer to iteration
--   data from user</li>
--   </ul>
--   
--   Returns the return value of the last call to <tt>iter_func</tt> if it
--   was non-zero, or zero if all properties have been processed. Returns a
--   negative value on failure.
--   
--   <pre>
--   int H5Piterate(hid_t id, int *idx, H5P_iterate_t iter_func,
--               void *iter_data);
--   </pre>
h5p_iterate :: HId_t -> InOut CInt -> H5P_iterate_t a -> InOut a -> IO CInt
p_H5Piterate :: FunPtr (HId_t -> InOut CInt -> H5P_iterate_t a -> InOut a -> IO CInt)

-- | Copies a property from one property list or class to another.
--   
--   If a property is copied from one class to another, all the property
--   information will be first deleted from the destination class and then
--   the property information will be copied from the source class into the
--   destination class.
--   
--   If a property is copied from one list to another, the property will be
--   first deleted from the destination list (generating a call to the
--   <tt>close</tt> callback for the property, if one exists) and then the
--   property is copied from the source list to the destination list
--   (generating a call to the <tt>copy</tt> callback for the property, if
--   one exists).
--   
--   If the property does not exist in the destination class or list, this
--   call is equivalent to calling H5Pregister2 or H5Pinsert2 (for a class
--   or list, as appropriate) and the <tt>create</tt> callback will be
--   called in the case of the property being copied into a list (if such a
--   callback exists for the property).
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> dst_id :: <a>HId_t</a> </tt></i> ID of destination
--   property list or class</li>
--   <li><i><tt> src_id :: <a>HId_t</a> </tt></i> ID of source property
--   list or class</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to
--   copy</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pcopy_prop(hid_t dst_id, hid_t src_id, const char *name);
--   </pre>
h5p_copy_prop :: HId_t -> HId_t -> CString -> IO HErr_t
p_H5Pcopy_prop :: FunPtr (HId_t -> HId_t -> CString -> IO HErr_t)

-- | Removes a property from a property list. Both properties which were in
--   existance when the property list was created (i.e. properties
--   registered with <a>h5p_register2</a>) and properties added to the list
--   after it was created (i.e. added with <a>h5p_insert2</a>) may be
--   removed from a property list. Properties do not need to be removed a
--   property list before the list itself is closed, they will be released
--   automatically when <a>h5p_close</a> is called. The <tt>close</tt>
--   callback for this property is called before the property is release,
--   if the callback exists.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> Property list to
--   modify</li>
--   <li><i><tt> name :: <a>CString</a> </tt></i> Name of property to
--   remove</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Premove(hid_t plist_id, const char *name);
--   </pre>
h5p_remove :: HId_t -> CString -> IO HErr_t
p_H5Premove :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Removes a property from a property list class. Future property lists
--   created of that class will not contain this property. Existing
--   property lists containing this property are not affected.
--   
--   Parameters: [<tt> pclass_id :: <a>HId_t</a> </tt>] Property list class
--   to modify [<tt> name :: <a>CString</a> </tt>] Name of property to
--   remove
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Punregister(hid_t pclass_id, const char *name);
--   </pre>
h5p_unregister :: HId_t -> CString -> IO HErr_t
p_H5Punregister :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Release memory and de-attach a class from the property list class
--   hierarchy.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> cls_id :: <a>HId_t</a> </tt></i> Property list class ID to
--   class</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pclose_class(hid_t plist_id);
--   </pre>
h5p_close_class :: HId_t -> IO HErr_t
p_H5Pclose_class :: FunPtr (HId_t -> IO HErr_t)

-- | Closes a property list. If a <tt>close</tt> callback exists for the
--   property list class, it is called before the property list is
--   destroyed. If <tt>close</tt> callbacks exist for any individual
--   properties in the property list, they are called after the class
--   <tt>close</tt> callback.
--   
--   Parameters: [<tt> plist_id :: <a>HId_t</a> </tt>] Property list to
--   close
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pclose(hid_t plist_id);
--   </pre>
h5p_close :: HId_t -> IO HErr_t
p_H5Pclose :: FunPtr (HId_t -> IO HErr_t)

-- | Copy a property list or class and return the ID. This routine calls
--   the class <tt>copy</tt> callback after any property <tt>copy</tt>
--   callbacks are called (assuming all property <tt>copy</tt> callbacks
--   return successfully).
--   
--   Parameters: hid_t id; IN: Property list or class ID to copy
--   
--   Returns a valid (non-negative) property list ID on success, negative
--   on failure.
--   
--   <pre>
--   hid_t H5Pcopy(hid_t plist_id);
--   </pre>
h5p_copy :: HId_t -> IO HId_t
p_H5Pcopy :: FunPtr (HId_t -> IO HId_t)

-- | Sets the cutoff values for indexes storing attributes in object
--   headers for this file. If more than <tt>max_compact</tt> attributes
--   are in an object header, the attributes will be moved to a heap and
--   indexed with a B-tree.
--   
--   Likewise, an object header containing fewer than <tt>min_dense</tt>
--   attributes will be converted back to storing the attributes directly
--   in the object header.
--   
--   If the <tt>max_compact</tt> is zero then attributes for this object
--   will never be stored in the object header but will be always be stored
--   in a heap.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_attr_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense);
--   </pre>
h5p_set_attr_phase_change :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_attr_phase_change :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Gets the phase change values for attribute storage
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_attr_phase_change(hid_t plist_id, unsigned *max_compact, unsigned *min_dense);
--   </pre>
h5p_get_attr_phase_change :: HId_t -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_attr_phase_change :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Set the flags for creation order of attributes on an object
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_attr_creation_order(hid_t plist_id, unsigned crt_order_flags);
--   </pre>
h5p_set_attr_creation_order :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_attr_creation_order :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Returns the flags indicating creation order is tracked/indexed for
--   attributes on an object.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_attr_creation_order(hid_t plist_id, unsigned *crt_order_flags);
--   </pre>
h5p_get_attr_creation_order :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_attr_creation_order :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Set whether the birth, access, modification &amp; change times for an
--   object are stored.
--   
--   Birth time is the time the object was created. Access time is the last
--   time that metadata or raw data was read from this object. Modification
--   time is the last time the data for this object was changed (either
--   writing raw data to a dataset or inserting<i>modifying</i>deleting a
--   link in a group). Change time is the last time the metadata for this
--   object was written (adding<i>modifying</i>deleting an attribute on an
--   object, extending the size of a dataset, etc).
--   
--   If these times are not tracked, they will be reported as 12:00 AM UDT,
--   Jan. 1, 1970 (i.e. 0 seconds past the UNIX epoch) when queried.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_obj_track_times(hid_t plist_id, hbool_t track_times);
--   </pre>
h5p_set_obj_track_times :: HId_t -> HBool_t -> IO HErr_t
p_H5Pset_obj_track_times :: FunPtr (HId_t -> HBool_t -> IO HErr_t)

-- | Returns whether times are tracked for an object.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_obj_track_times(hid_t plist_id, hbool_t *track_times);
--   </pre>
h5p_get_obj_track_times :: HId_t -> Out HBool_t -> IO HErr_t
p_H5Pget_obj_track_times :: FunPtr (HId_t -> Out HBool_t -> IO HErr_t)

-- | Modifies the specified <a>filter</a> in the transient or permanent
--   output filter pipeline depending on whether <tt>plist</tt> is a
--   dataset creation or dataset transfer property list. The <tt>flags</tt>
--   argument specifies certain general properties of the filter and is
--   documented below. The <tt>cd_values</tt> is an array of
--   <tt>cd_nelmts</tt> integers which are auxiliary data for the filter.
--   The integer values will be stored in the dataset object header as part
--   of the filter information.
--   
--   The <tt>flags</tt> argument is a bit vector of the following fields:
--   
--   <ul>
--   <li><i><a>h5z_FLAG_OPTIONAL</a></i> If this bit is set then the filter
--   is optional. If the filter fails during an <a>h5d_write</a> operation
--   then the filter is just excluded from the pipeline for the chunk for
--   which it failed; the filter will not participate in the pipeline
--   during an <a>h5d_read</a> of the chunk. If this bit is clear and the
--   filter fails then the entire I/O operation fails. If this bit is set
--   but encoding is disabled for a filter, attempting to write will
--   generate an error.</li>
--   </ul>
--   
--   Note: This function currently supports only the permanent filter
--   pipeline. That is, <tt>plist_id</tt> must be a dataset creation
--   property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pmodify_filter(hid_t plist_id, H5Z_filter_t filter,
--           unsigned int flags, size_t cd_nelmts,
--           const unsigned int cd_values[/*cd_nelmts*/]);
--   </pre>
h5p_modify_filter :: HId_t -> H5Z_filter_t -> CUInt -> CSize -> InArray CUInt -> IO HErr_t
p_H5Pmodify_filter :: FunPtr (HId_t -> H5Z_filter_t -> CUInt -> CSize -> InArray CUInt -> IO HErr_t)

-- | Adds the specified <a>filter</a> and corresponding properties to the
--   end of the data or link output filter pipeline depending on whether
--   <tt>plist</tt> is a dataset creation or group creation property list.
--   The <tt>flags</tt> argument specifies certain general properties of
--   the filter and is documented below. The <tt>cd_values</tt> is an array
--   of <tt>cd_nelmts</tt> integers which are auxiliary data for the
--   filter. The integer vlues will be stored in the dataset object header
--   as part of the filter information.
--   
--   The <tt>flags</tt> argument is a bit vector of the following fields:
--   
--   <ul>
--   <li><i><a>h5z_FLAG_OPTIONAL</a></i> If this bit is set then the filter
--   is optional. If the filter fails during an <a>h5d_write</a> operation
--   then the filter is just excluded from the pipeline for the chunk for
--   which it failed; the filter will not participate in the pipeline
--   during an <a>h5d_read</a> of the chunk. If this bit is clear and the
--   filter fails then the entire I/O operation fails. If this bit is set
--   but encoding is disabled for a filter, attempting to write will
--   generate an error.</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter,
--           unsigned int flags, size_t cd_nelmts,
--           const unsigned int c_values[]);
--   </pre>
h5p_set_filter :: HId_t -> H5Z_filter_t -> CUInt -> CSize -> InArray CUInt -> IO HErr_t
p_H5Pset_filter :: FunPtr (HId_t -> H5Z_filter_t -> CUInt -> CSize -> InArray CUInt -> IO HErr_t)

-- | Returns the number of filters in the data or link pipeline depending
--   on whether <tt>plist_id</tt> is a dataset creation or group creation
--   property list. In each pipeline the filters are numbered from zero
--   through N-1 where N is the value returned by this function. During
--   output to the file the filters of a pipeline are applied in increasing
--   order (the inverse is true for input).
--   
--   Returns the number of filters or negative on failure.
--   
--   <pre>
--   int H5Pget_nfilters(hid_t plist_id);
--   </pre>
h5p_get_nfilters :: HId_t -> IO CInt
p_H5Pget_nfilters :: FunPtr (HId_t -> IO CInt)

-- | This is the query counterpart of <a>h5p_set_filter</a> and returns
--   information about a particular filter number in a permanent or
--   transient pipeline depending on whether <tt>plist_id</tt> is a dataset
--   creation or transfer property list. On input, <tt>cd_nelmts</tt>
--   indicates the number of entries in the <tt>cd_values</tt> array
--   allocated by the caller while on exit it contains the number of values
--   defined by the filter. <tt>filter_config</tt> is a bit field contaning
--   encode/decode flags from <a>Bindings.HDF5.Raw.H5Z</a>. The
--   <tt>idx</tt> should be a value between zero and N-1 as described for
--   <a>h5p_get_nfilters</a> and the function will return failure if the
--   filter number is out of range.
--   
--   Returns the filter identification number or <a>h5z_FILTER_ERROR</a> on
--   failure (which is negative).
--   
--   <pre>
--   H5Z_filter_t H5Pget_filter2(hid_t plist_id, unsigned filter,
--          unsigned int *flags/*out*/,
--          size_t *cd_nelmts/*out*/,
--          unsigned cd_values[]/*out*/,
--          size_t namelen, char name[],
--          unsigned *filter_config /*out*/);
--   </pre>
h5p_get_filter2 :: HId_t -> CUInt -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> Out CUInt -> IO H5Z_filter_t
p_H5Pget_filter2 :: FunPtr (HId_t -> CUInt -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> Out CUInt -> IO H5Z_filter_t)

-- | This is an additional query counterpart of <a>h5p_set_filter</a> and
--   returns information about a particular filter in a permanent or
--   transient pipeline depending on whether <tt>plist_id</tt> is a dataset
--   creation or transfer property list. On input, <tt>cd_nelmts</tt>
--   indicates the number of entries in the <tt>cd_values</tt> array
--   allocated by the caller while on exit it contains the number of values
--   defined by the filter. <tt>filter_config</tt> is a bit field contaning
--   encode/decode flags from <a>Bindings.HDF5.Raw.H5Z</a>. The ID should
--   be the filter ID to retrieve the parameters for. If the filter is not
--   set for the property list, an error will be returned.
--   
--   Returns the number of filters or negative on failure.
--   
--   <pre>
--   herr_t H5Pget_filter_by_id2(hid_t plist_id, H5Z_filter_t id,
--          unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
--          unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/,
--          unsigned *filter_config/*out*/);
--   </pre>
h5p_get_filter_by_id2 :: HId_t -> H5Z_filter_t -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> Out CUInt -> IO HErr_t
p_H5Pget_filter_by_id2 :: FunPtr (HId_t -> H5Z_filter_t -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> Out CUInt -> IO HErr_t)

-- | This is a query routine to verify that all the filters set in the
--   dataset creation property list are available currently.
--   
--   <pre>
--   htri_t H5Pall_filters_avail(hid_t plist_id);
--   </pre>
h5p_all_filters_avail :: HId_t -> IO HTri_t
p_H5Pall_filters_avail :: FunPtr (HId_t -> IO HTri_t)

-- | Deletes a filter from the dataset creation property list; deletes all
--   filters if <a>filter</a> is <a>h5z_FILTER_NONE</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Premove_filter(hid_t plist_id, H5Z_filter_t filter);
--   </pre>
h5p_remove_filter :: HId_t -> H5Z_filter_t -> IO HErr_t
p_H5Premove_filter :: FunPtr (HId_t -> H5Z_filter_t -> IO HErr_t)

-- | Sets the compression method for a dataset or group link filter
--   pipeline (depending on whether <tt>plist_id</tt> is a dataset creation
--   or group creation property list) to <a>h5z_FILTER_DEFLATE</a> and the
--   compression level to <tt>level</tt> which should be a value between
--   zero and nine, inclusive. Lower compression levels are faster but
--   result in less compression. This is the same algorithm as used by the
--   GNU gzip program.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_deflate(hid_t plist_id, unsigned aggression);
--   </pre>
h5p_set_deflate :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_deflate :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Sets Fletcher32 checksum of EDC for a dataset creation property list
--   or group creation property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fletcher32(hid_t plist_id);
--   </pre>
h5p_set_fletcher32 :: HId_t -> IO HErr_t
p_H5Pset_fletcher32 :: FunPtr (HId_t -> IO HErr_t)

-- | Retrieves version information for various parts of a file.
--   
--   Any (or even all) of the output arguments can be null pointers.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> The file creation
--   property list ID</li>
--   <li><i><tt> boot :: <a>Out</a> <a>CUInt</a> </tt></i> The file super
--   block.</li>
--   <li><i><tt> freelist :: <a>Out</a> <a>CUInt</a> </tt></i> The global
--   free list.</li>
--   <li><i><tt> stab :: <a>Out</a> <a>CUInt</a> </tt></i> The root symbol
--   table entry.</li>
--   <li><i><tt> shhdr :: <a>Out</a> <a>CUInt</a> </tt></i> Shared object
--   headers.</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_version(hid_t plist_id, unsigned *boot/*out*/,
--            unsigned *freelist/*out*/, unsigned *stab/*out*/,
--            unsigned *shhdr/*out*/);
--   </pre>
h5p_get_version :: HId_t -> Out CUInt -> Out CUInt -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_version :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Sets the userblock size field of a file creation property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_userblock(hid_t plist_id, hsize_t size);
--   </pre>
h5p_set_userblock :: HId_t -> HSize_t -> IO HErr_t
p_H5Pset_userblock :: FunPtr (HId_t -> HSize_t -> IO HErr_t)

-- | Queries the size of a user block in a file creation property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_userblock(hid_t plist_id, hsize_t *size);
--   </pre>
h5p_get_userblock :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Pget_userblock :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | Sets file size-of addresses and sizes. <tt>plist_id</tt> should be a
--   file creation property list. A value of zero causes the property to
--   not change.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_sizes(hid_t plist_id, size_t sizeof_addr,
--          size_t sizeof_size);
--   </pre>
h5p_set_sizes :: HId_t -> CSize -> CSize -> IO HErr_t
p_H5Pset_sizes :: FunPtr (HId_t -> CSize -> CSize -> IO HErr_t)

-- | Returns the size of address and size quantities stored in a file
--   according to a file creation property list. Either (or even both)
--   <tt>sizeof_addr</tt> and <tt>sizeof_size</tt> may be null pointers.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_sizes(hid_t plist_id, size_t *sizeof_addr/*out*/,
--          size_t *sizeof_size/*out*/);
--   </pre>
h5p_get_sizes :: HId_t -> Out CSize -> Out CSize -> IO HErr_t
p_H5Pget_sizes :: FunPtr (HId_t -> Out CSize -> Out CSize -> IO HErr_t)

-- | IK is one half the rank of a tree that stores a symbol table for a
--   group. Internal nodes of the symbol table are on average 75% full.
--   That is, the average rank of the tree is 1.5 times the value of IK.
--   
--   LK is one half of the number of symbols that can be stored in a symbol
--   table node. A symbol table node is the leaf of a symbol table tree
--   which is used to store a group. When symbols are inserted randomly
--   into a group, the group's symbol table nodes are 75% full on average.
--   That is, they contain 1.5 times the number of symbols specified by LK.
--   
--   Either (or even both) of IK and LK can be zero in which case that
--   value is left unchanged.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_sym_k(hid_t plist_id, unsigned ik, unsigned lk);
--   </pre>
h5p_set_sym_k :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_sym_k :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Retrieves the symbol table B-tree 1/2 rank (IK) and the symbol table
--   leaf node 1/2 size (LK). See <a>h5p_set_sym_k</a> for details. Either
--   (or even both) IK and LK may be null pointers.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_sym_k(hid_t plist_id, unsigned *ik/*out*/, unsigned *lk/*out*/);
--   </pre>
h5p_get_sym_k :: HId_t -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_sym_k :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | IK is one half the rank of a tree that stores chunked raw data. On
--   average, such a tree will be 75% full, or have an average rank of 1.5
--   times the value of IK.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_istore_k(hid_t plist_id, unsigned ik);
--   </pre>
h5p_set_istore_k :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_istore_k :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Queries the 1/2 rank of an indexed storage B-tree. See
--   <a>h5p_set_istore_k</a> for details. The argument IK may be the null
--   pointer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_istore_k(hid_t plist_id, unsigned *ik/*out*/);
--   </pre>
h5p_get_istore_k :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_istore_k :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Set the number of Shared Object Header Message (SOHM) indexes
--   specified in this property list. If this is zero then shared object
--   header messages are disabled for this file.
--   
--   These indexes can then be configured with H5Pset_shared_mesg_index.
--   <tt>h5p_set_shared_mesg_phase_chage</tt> also controls settings for
--   all indexes.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_shared_mesg_nindexes(hid_t plist_id, unsigned nindexes);
--   </pre>
h5p_set_shared_mesg_nindexes :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_shared_mesg_nindexes :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Get the number of Shared Object Header Message (SOHM) indexes
--   specified in this property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_shared_mesg_nindexes(hid_t plist_id, unsigned *nindexes);
--   </pre>
h5p_get_shared_mesg_nindexes :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_shared_mesg_nindexes :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Configure a given shared message index. Sets the types of message that
--   should be stored in this index and the minimum size of a message in
--   the index.
--   
--   <tt>index_num</tt> is zero-indexed (in a file with three indexes, they
--   are numbered 0, 1, and 2).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned mesg_type_flags, unsigned min_mesg_size);
--   </pre>
h5p_set_shared_mesg_index :: HId_t -> CUInt -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_shared_mesg_index :: FunPtr (HId_t -> CUInt -> CUInt -> CUInt -> IO HErr_t)

-- | Get information about a given shared message index. Gets the types of
--   message that are stored in the index and the minimum size of a message
--   in the index.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_shared_mesg_index(hid_t plist_id, unsigned index_num, unsigned *mesg_type_flags, unsigned *min_mesg_size);
--   </pre>
h5p_get_shared_mesg_index :: HId_t -> CUInt -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_shared_mesg_index :: FunPtr (HId_t -> CUInt -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Sets the cutoff values for indexes storing shared object header
--   messages in this file. If more than <tt>max_list</tt> messages are in
--   an index, that index will become a B-tree. Likewise, a B-tree index
--   containing fewer than <tt>min_btree</tt> messages will be converted to
--   a list.
--   
--   If the <tt>max_list</tt> is zero then SOHM indexes in this file will
--   never be lists but will be created as B-trees.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_shared_mesg_phase_change(hid_t plist_id, unsigned max_list, unsigned min_btree);
--   </pre>
h5p_set_shared_mesg_phase_change :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_shared_mesg_phase_change :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Gets the maximum size of a SOHM list index before it becomes a B-tree.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_shared_mesg_phase_change(hid_t plist_id, unsigned *max_list, unsigned *min_btree);
--   </pre>
h5p_get_shared_mesg_phase_change :: HId_t -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_shared_mesg_phase_change :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Sets the alignment properties of a file access property list so that
--   any file object &gt;= <tt>threshold</tt> bytes will be aligned on an
--   address which is a multiple of <a>alignment</a>. The addresses are
--   relative to the end of the user block; the alignment is calculated by
--   subtracting the user block size from the absolute file address and
--   then adjusting the address to be a multiple of <a>alignment</a>.
--   
--   Default values for <tt>threshold</tt> and <a>alignment</a> are one,
--   implying no alignment. Generally the default values will result in the
--   best performance for single-process access to the file. For MPI-IO and
--   other parallel systems, choose an alignment which is a multiple of the
--   disk block size.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_alignment(hid_t fapl_id, hsize_t threshold,
--       hsize_t alignment);
--   </pre>
h5p_set_alignment :: HId_t -> HSize_t -> HSize_t -> IO HErr_t
p_H5Pset_alignment :: FunPtr (HId_t -> HSize_t -> HSize_t -> IO HErr_t)

-- | Returns the current settings for alignment properties from a file
--   access property list. The <tt>threshold</tt> and/or <a>alignment</a>
--   pointers may be null pointers.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/,
--       hsize_t *alignment/*out*/);
--   </pre>
h5p_get_alignment :: HId_t -> Out HSize_t -> Out HSize_t -> IO HErr_t
p_H5Pget_alignment :: FunPtr (HId_t -> Out HSize_t -> Out HSize_t -> IO HErr_t)

-- | Set the file driver (<tt>driver_id</tt>) for a file access or data
--   transfer property list (<tt>plist_id</tt>) and supply an optional
--   struct containing the driver-specific properites
--   (<tt>driver_info</tt>). The driver properties will be copied into the
--   property list and the reference count on the driver will be
--   incremented, allowing the caller to close the driver ID but still use
--   the property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id,
--           const void *driver_info);
--   </pre>
h5p_set_driver :: HId_t -> HId_t -> In a -> IO HErr_t
p_H5Pset_driver :: FunPtr (HId_t -> HId_t -> In a -> IO HErr_t)

-- | Return the ID of the low-level file driver. <tt>plist_id</tt> should
--   be a file access property list or data transfer propert list.
--   
--   Returns a low-level driver ID which is the same ID used when the
--   driver was set for the property list. The driver ID is only valid as
--   long as the file driver remains registered.
--   
--   Returns a negative value on failure.
--   
--   <pre>
--   hid_t H5Pget_driver(hid_t plist_id);
--   </pre>
h5p_get_driver :: HId_t -> IO HId_t
p_H5Pget_driver :: FunPtr (HId_t -> IO HId_t)

-- | Returns a pointer directly to the file driver-specific information of
--   a file access or data transfer property list.
--   
--   On success, returns a pointer to *uncopied* driver specific data
--   structure if any.
--   
--   On failure, returns NULL. Null is also returned if the driver has not
--   registered any driver-specific properties although no error is pushed
--   on the stack in this case.
--   
--   <pre>
--   void *H5Pget_driver_info(hid_t plist_id);
--   </pre>
h5p_get_driver_info :: HId_t -> IO (Ptr a)
p_H5Pget_driver_info :: FunPtr (HId_t -> IO (Ptr a))

-- | Set offset for family driver. This file access property list will be
--   passed to H5Fget_vfd_handle or <a>h5fd_get_vfd_handle</a> to retrieve
--   VFD file handle.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_family_offset(hid_t fapl_id, hsize_t offset);
--   </pre>
h5p_set_family_offset :: HId_t -> HSize_t -> IO HErr_t
p_H5Pset_family_offset :: FunPtr (HId_t -> HSize_t -> IO HErr_t)

-- | Get offset for family driver. This file access property list will be
--   passed to H5Fget_vfd_handle or <a>h5fd_get_vfd_handle</a> to retrieve
--   VFD file handle.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_family_offset(hid_t fapl_id, hsize_t *offset);
--   </pre>
h5p_get_family_offset :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Pget_family_offset :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | Set data type for multi driver. This file access property list will be
--   passed to <a>h5f_get_vfd_handle</a> or <a>h5fd_get_vfd_handle</a> to
--   retrieve VFD file handle.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type);
--   </pre>
h5p_set_multi_type :: HId_t -> H5FD_mem_t -> IO HErr_t
p_H5Pset_multi_type :: FunPtr (HId_t -> H5FD_mem_t -> IO HErr_t)

-- | Get data type for multi driver. This file access property list will be
--   passed to H5Fget_vfd_handle or <a>h5fd_get_vfd_handle</a> to retrieve
--   VFD file handle.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type);
--   </pre>
h5p_get_multi_type :: HId_t -> Out H5FD_mem_t -> IO HErr_t
p_H5Pget_multi_type :: FunPtr (HId_t -> Out H5FD_mem_t -> IO HErr_t)

-- | Set the number of objects in the meta data cache and the maximum
--   number of chunks and bytes in the raw data chunk cache.
--   
--   The <tt>rdcc_w0</tt> value should be between 0 and 1 inclusive and
--   indicates how much chunks that have been fully read or fully written
--   are favored for preemption. A value of zero means fully read or
--   written chunks are treated no differently than other chunks (the
--   preemption is strictly LRU) while a value of one means fully read
--   chunks are always preempted before other chunks.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts,
--          size_t rdcc_nslots, size_t rdcc_nbytes,
--          double rdcc_w0);
--   </pre>
h5p_set_cache :: HId_t -> CInt -> CSize -> CSize -> CDouble -> IO HErr_t
p_H5Pset_cache :: FunPtr (HId_t -> CInt -> CSize -> CSize -> CDouble -> IO HErr_t)

-- | Retrieves the maximum possible number of elements in the meta data
--   cache and the maximum possible number of elements and bytes and the
--   <tt>rdcc_w0</tt> value in the raw data chunk cache. Any (or all)
--   arguments may be null pointers in which case the corresponding datum
--   is not returned.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_cache(hid_t plist_id,
--          int *mdc_nelmts, /* out */
--          size_t *rdcc_nslots/*out*/,
--          size_t *rdcc_nbytes/*out*/, double *rdcc_w0);
--   </pre>
h5p_get_cache :: HId_t -> Out CInt -> Out CSize -> Out CSize -> Out CDouble -> IO HErr_t
p_H5Pget_cache :: FunPtr (HId_t -> Out CInt -> Out CSize -> Out CSize -> Out CDouble -> IO HErr_t)

-- | Set the initial metadata cache resize configuration in the target
--   FAPL.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_mdc_config(hid_t    plist_id,
--          H5AC_cache_config_t * config_ptr);
--   </pre>
h5p_set_mdc_config :: HId_t -> In H5AC_cache_config_t -> IO HErr_t
p_H5Pset_mdc_config :: FunPtr (HId_t -> In H5AC_cache_config_t -> IO HErr_t)

-- | Retrieve the metadata cache initial resize configuration from the
--   target FAPL.
--   
--   Observe that the function will fail if <tt>config_ptr</tt> is NULL, or
--   if <tt>config_ptr</tt>-&gt;<tt>version</tt> specifies an unknown
--   version of <a>H5AC_cache_config_t</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_mdc_config(hid_t     plist_id,
--          H5AC_cache_config_t * config_ptr);	/* out */
--   </pre>
h5p_get_mdc_config :: HId_t -> Out H5AC_cache_config_t -> IO HErr_t
p_H5Pget_mdc_config :: FunPtr (HId_t -> Out H5AC_cache_config_t -> IO HErr_t)

-- | Sets the flag for garbage collecting references for the file. Dataset
--   region references (and other reference types probably) use space in
--   the file heap. If garbage collection is on and the user passes in an
--   uninitialized value in a reference structure, the heap might get
--   corrupted. When garbage collection is off however and the user re-uses
--   a reference, the previous heap block will be orphaned and not returned
--   to the free heap space. When garbage collection is on, the user must
--   initialize the reference structures to 0 or risk heap corruption.
--   
--   Default value for garbage collecting references is off, just to be on
--   the safe side.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_gc_references(hid_t fapl_id, unsigned gc_ref);
--   </pre>
h5p_set_gc_references :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_gc_references :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Returns the current setting for the garbage collection references
--   property from a file access property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_gc_references(hid_t fapl_id, unsigned *gc_ref/*out*/);
--   </pre>
h5p_get_gc_references :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_gc_references :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Sets the degree for the file close behavior.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t degree);
--   </pre>
h5p_set_fclose_degree :: HId_t -> H5F_close_degree_t -> IO HErr_t
p_H5Pset_fclose_degree :: FunPtr (HId_t -> H5F_close_degree_t -> IO HErr_t)

-- | Gets the degree for the file close behavior.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *degree);
--   </pre>
h5p_get_fclose_degree :: HId_t -> Out H5F_close_degree_t -> IO HErr_t
p_H5Pget_fclose_degree :: FunPtr (HId_t -> Out H5F_close_degree_t -> IO HErr_t)

-- | Sets the minimum size of metadata block allocations when the
--   <a>h5fd_FEAT_AGGREGATE_METADATA</a> is set by a VFL driver. Each "raw"
--   metadata block is allocated to be this size and then specific pieces
--   of metadata (object headers, local heaps, B-trees, etc) are
--   sub-allocated from this block.
--   
--   The default value is set to 2048 (bytes), indicating that metadata
--   will be attempted to be bunched together in (at least) 2K blocks in
--   the file. Setting the value to 0 with this API function will turn off
--   the metadata aggregation, even if the VFL driver attempts to use that
--   strategy.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_meta_block_size(hid_t fapl_id, hsize_t size);
--   </pre>
h5p_set_meta_block_size :: HId_t -> HSize_t -> IO HErr_t
p_H5Pset_meta_block_size :: FunPtr (HId_t -> HSize_t -> IO HErr_t)

-- | Returns the current settings for the metadata block allocation
--   property from a file access property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_meta_block_size(hid_t fapl_id, hsize_t *size/*out*/);
--   </pre>
h5p_get_meta_block_size :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Pget_meta_block_size :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | Sets the maximum size of the data seive buffer used for file drivers
--   which are capable of using data sieving. The data sieve buffer is used
--   when performing I/O on datasets in the file. Using a buffer which is
--   large anough to hold several pieces of the dataset being read in for
--   hyperslab selections boosts performance by quite a bit.
--   
--   The default value is set to 64KB, indicating that file I/O for raw
--   data reads and writes will occur in at least 64KB blocks. Setting the
--   value to 0 with this API function will turn off the data sieving, even
--   if the VFL driver attempts to use that strategy.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size);
--   </pre>
h5p_set_sieve_buf_size :: HId_t -> CSize -> IO HErr_t
p_H5Pset_sieve_buf_size :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Returns the current settings for the data sieve buffer size property
--   from a file access property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size/*out*/);
--   </pre>
h5p_get_sieve_buf_size :: HId_t -> Out CSize -> IO HErr_t
p_H5Pget_sieve_buf_size :: FunPtr (HId_t -> Out CSize -> IO HErr_t)

-- | Sets the minimum size of "small" raw data block allocations when the
--   <a>h5fd_FEAT_AGGREGATE_SMALLDATA</a> is set by a VFL driver. Each
--   "small" raw data block is allocated to be this size and then pieces of
--   raw data which are small enough to fit are sub-allocated from this
--   block.
--   
--   The default value is set to 2048 (bytes), indicating that raw data
--   smaller than this value will be attempted to be bunched together in
--   (at least) 2K blocks in the file. Setting the value to 0 with this API
--   function will turn off the "small" raw data aggregation, even if the
--   VFL driver attempts to use that strategy.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_small_data_block_size(hid_t fapl_id, hsize_t size);
--   </pre>
h5p_set_small_data_block_size :: HId_t -> HSize_t -> IO HErr_t
p_H5Pset_small_data_block_size :: FunPtr (HId_t -> HSize_t -> IO HErr_t)

-- | Returns the current settings for the "small" raw data block allocation
--   property from a file access property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_small_data_block_size(hid_t fapl_id, hsize_t *size/*out*/);
--   </pre>
h5p_get_small_data_block_size :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Pget_small_data_block_size :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)

-- | Indicates which versions of the file format the library should use
--   when creating objects. <tt>low</tt> is the earliest version of the
--   HDF5 library that is guaranteed to be able to access the objects
--   created (the format of some objects in an HDF5 file may not have
--   changed between versions of the HDF5 library, possibly allowing
--   earlier versions of the HDF5 library to access those objects) and
--   <tt>high</tt> is the latest version of the library required to access
--   the objects created (later versions of the HDF5 library will also be
--   able to access those objects).
--   
--   <tt>low</tt> is used to require that objects use a more modern format
--   and <tt>high</tt> is used to restrict objects from using a more modern
--   format.
--   
--   The special values of <tt>h5f_FORMAT_EARLIEST</tt> and
--   <tt>h5f_FORMAT_LATEST</tt> can be used in the following manner:
--   Setting <tt>low</tt> and <tt>high</tt> to <tt>h5f_FORMAT_LATEST</tt>
--   will produce files whose objects use the latest version of the file
--   format available in the current HDF5 library for each object created.
--   Setting <tt>low</tt> and <tt>high</tt> to <tt>h5f_FORMAT_EARLIEST</tt>
--   will produce files that that always require the use of the earliest
--   version of the file format for each object created. [NOTE!
--   <tt>low</tt>=<tt>high</tt>=<tt>h5f_FORMAT_EARLIEST</tt> is not
--   implemented as of version 1.8.0 and setting <tt>low</tt> and
--   <tt>high</tt> to <tt>h5f_FORMAT_EARLIEST</tt> will produce an error
--   currently].
--   
--   Currently, the only two valid combinations for this routine are:
--   <tt>low</tt> = <tt>h5f_FORMAT_EARLIEST</tt> and <tt>high</tt> =
--   <tt>h5f_FORMAT_LATEST</tt> (the default setting, which creates objects
--   with the ealiest version possible for each object, but no upper limit
--   on the version allowed to be created if a newer version of an object's
--   format is required to support a feature requested with an HDF5 library
--   API routine), and <tt>low</tt> = <tt>h5f_FORMAT_LATEST</tt> and
--   <tt>high</tt> = <tt>h5f_FORMAT_LATEST</tt> (which is described above).
--   
--   The <tt>low</tt> and <tt>high</tt> values set with this routine at
--   imposed with each HDF5 library API call that creates objects in the
--   file. API calls that would violate the <tt>low</tt> or <tt>high</tt>
--   format bound will fail.
--   
--   Setting the <tt>low</tt> and <tt>high</tt> values will not affect
--   reading / writing existing objects, only the creation of new objects.
--   
--   Note: Eventually we want to add more values to the <a>H5F_libver_t</a>
--   enumerated type that indicate library release values where the file
--   format was changed (like <tt>h5f_FORMAT_1_2_0</tt> for the file format
--   changes in the 1.2.x release branch and possily even
--   <tt>h5f_FORMAT_1_4_2</tt> for a change mid-way through the 1.4.x
--   release branch, etc).
--   
--   Adding more values will allow applications to make settings like the
--   following:
--   
--   <ul>
--   <li><i><tt>low</tt> = <tt>h5f_FORMAT_EARLIEST</tt>, <tt>high</tt> =
--   <tt>h5f_FORMAT_1_2_0</tt></i> Create objects with the earliest
--   possible format and don't allow any objects to be created that require
--   a library version greater than 1.2.x (This is the "make certain that
--   &lt;application&gt; linked with v1.2.x of the library can read the
--   file produced" use case)</li>
--   <li><i><tt>low</tt> = <tt>h5f_FORMAT_1_4_2</tt>, <tt>high</tt> =
--   <tt>h5f_FORMAT_LATEST</tt></i> Create objects with at least the
--   version of their format that the 1.4.2 library uses and allow any
--   later version of the object's format necessary to represent features
--   used. (This is the "make certain to take advantage of &lt;new
--   feature&gt; in the file format" use case (maybe &lt;new feature&gt; is
--   smaller or scales better than an ealier version, which would otherwise
--   be used))</li>
--   <li><i><tt>low</tt> = <tt>h5f_FORMAT_1_2_0</tt>, <tt>high</tt> =
--   <tt>h5f_FORMAT_1_6_0</tt></i> Creates objects with at least the
--   version of their format that the 1.2.x library uses and don't allow
--   any objects to be created that require a library version greater than
--   1.6.x. (Not certain of a particular use case for these settings,
--   although its probably just the logical combination of the previous
--   two; it just falls out as possible/logical (if it turns out to be hard
--   to implement in some way, we can always disallow it))</li>
--   </ul>
--   
--   Note #2: We talked about whether to include enum values for only
--   library versions where the format changed and decided it would be less
--   confusing for application developers if we include enum values for
--   _all_ library releases and then map down to the previous actual
--   library release which had a format change.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low,
--       H5F_libver_t high);
--   </pre>
h5p_set_libver_bounds :: HId_t -> H5F_libver_t -> H5F_libver_t -> IO HErr_t
p_H5Pset_libver_bounds :: FunPtr (HId_t -> H5F_libver_t -> H5F_libver_t -> IO HErr_t)

-- | Returns the current settings for the library version format bounds
--   from a file access property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low,
--       H5F_libver_t *high);
--   </pre>
h5p_get_libver_bounds :: HId_t -> Out H5F_libver_t -> Out H5F_libver_t -> IO HErr_t
p_H5Pget_libver_bounds :: FunPtr (HId_t -> Out H5F_libver_t -> Out H5F_libver_t -> IO HErr_t)

-- | Sets the number of files opened through external links from the file
--   associated with this fapl to be held open in that file's external file
--   cache. When the maximum number of files is reached, the least recently
--   used file is closed (unless it is opened from somewhere else).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_elink_file_cache_size(hid_t plist_id, unsigned efc_size);
--   </pre>
h5p_set_elink_file_cache_size :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_elink_file_cache_size :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Gets the number of files opened through external links from the file
--   associated with this fapl to be held open in that file's external file
--   cache. When the maximum number of files is reached, the least recently
--   used file is closed (unless it is opened from somewhere else).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_elink_file_cache_size(hid_t plist_id, unsigned *efc_size);
--   </pre>
h5p_get_elink_file_cache_size :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_elink_file_cache_size :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Sets the initial file image. Some file drivers can initialize the
--   starting data in a file from a buffer.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Pset_file_image(hid_t fapl_id, void *buf_ptr, size_t buf_len);
--   </pre>
h5p_set_file_image :: HId_t -> Ptr a -> CSize -> IO HErr_t
p_H5Pset_file_image :: FunPtr (HId_t -> Ptr a -> CSize -> IO HErr_t)

-- | If the file image exists and buf_ptr_ptr is not NULL, allocate a
--   buffer of the correct size, copy the image into the new buffer, and
--   return the buffer to the caller in *buf_ptr_ptr. Do this using the
--   file image callbacks if defined.
--   
--   NB: It is the responsibility of the caller to free the buffer whose
--   address is returned in *buf_ptr_ptr. Do this using free if the file
--   image callbacks are not defined, or with whatever method is
--   appropriate if the callbacks are defined.
--   
--   If buf_ptr_ptr is not NULL, and no image exists, set *buf_ptr_ptr to
--   NULL.
--   
--   If buf_len_ptr is not NULL, set *buf_len_ptr equal to the length of
--   the file image if it exists, and to 0 if it does not.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Pget_file_image(hid_t fapl_id, void **buf_ptr_ptr, size_t *buf_len_ptr);
--   </pre>
h5p_get_file_image :: HId_t -> Ptr (Ptr a) -> CSize -> IO HErr_t
p_H5Pget_file_image :: FunPtr (HId_t -> Ptr (Ptr a) -> CSize -> IO HErr_t)

-- | Sets the callbacks for file images. Some file drivers allow the use of
--   user-defined callbacks for allocating, freeing and copying the drivers
--   internal buffer, potentially allowing a clever user to do
--   optimizations such as avoiding large mallocs and memcpys or to perform
--   detailed logging.
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Pset_file_image_callbacks(hid_t fapl_id,
--      H5FD_file_image_callbacks_t *callbacks_ptr);
--   </pre>
h5p_set_file_image_callbacks :: HId_t -> In H5FD_file_image_callbacks_t -> IO HErr_t
p_H5Pset_file_image_callbacks :: FunPtr (HId_t -> In H5FD_file_image_callbacks_t -> IO HErr_t)

-- | Sets the callbacks for file images. Some file drivers allow the use of
--   user-defined callbacks for allocating, freeing and copying the drivers
--   internal buffer, potentially allowing a clever user to do
--   optimizations such as avoiding large mallocs
--   
--   Returns non-negative on success, negative on failure
--   
--   <pre>
--   herr_t H5Pget_file_image_callbacks(hid_t fapl_id,
--      H5FD_file_image_callbacks_t *callbacks_ptr);
--   </pre>
h5p_get_file_image_callbacks :: HId_t -> Out H5FD_file_image_callbacks_t -> IO HErr_t
p_H5Pget_file_image_callbacks :: FunPtr (HId_t -> Out H5FD_file_image_callbacks_t -> IO HErr_t)

-- | Sets the layout of raw data in the file.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_layout(hid_t plist_id, H5D_layout_t layout);
--   </pre>
h5p_set_layout :: HId_t -> H5D_layout_t -> IO HErr_t
p_H5Pset_layout :: FunPtr (HId_t -> H5D_layout_t -> IO HErr_t)

-- | Retrieves layout type of a dataset creation property list.
--   
--   Returns the layout type on success, negative on failure.
--   
--   <pre>
--   H5D_layout_t H5Pget_layout(hid_t plist_id);
--   </pre>
h5p_get_layout :: HId_t -> IO H5D_layout_t
p_H5Pget_layout :: FunPtr (HId_t -> IO H5D_layout_t)

-- | Sets the number of dimensions and the size of each chunk to the values
--   specified. The dimensionality of the chunk should match the
--   dimensionality of the dataspace.
--   
--   As a side effect, the layout method is changed to <a>h5d_CHUNKED</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_chunk(hid_t plist_id, int ndims, const hsize_t dim[/*ndims*/]);
--   </pre>
h5p_set_chunk :: HId_t -> CInt -> InArray HSize_t -> IO HErr_t
p_H5Pset_chunk :: FunPtr (HId_t -> CInt -> InArray HSize_t -> IO HErr_t)

-- | Retrieves the chunk size of chunked layout. The chunk dimensionality
--   is returned and the chunk size in each dimension is returned through
--   the DIM argument. At most <tt>max_ndims</tt> elements of <tt>dim</tt>
--   will be initialized.
--   
--   Returns a negative value on failure.
--   
--   <pre>
--   int H5Pget_chunk(hid_t plist_id, int max_ndims, hsize_t dim[]/*out*/);
--   </pre>
h5p_get_chunk :: HId_t -> CInt -> OutArray HSize_t -> IO CInt
p_H5Pget_chunk :: FunPtr (HId_t -> CInt -> OutArray HSize_t -> IO CInt)

-- | Adds an external file to the list of external files. <tt>plist_id</tt>
--   should be an object ID for a dataset creation property list.
--   <tt>name</tt> is the name of an external file, <tt>offset</tt> is the
--   location where the data starts in that file, and <tt>size</tt> is the
--   number of bytes reserved in the file for the data.
--   
--   If a dataset is split across multiple files then the files should be
--   defined in order. The total size of the dataset is the sum of the
--   <tt>size</tt> arguments for all the external files. If the total size
--   is larger than the size of a dataset then the dataset can be extended
--   (provided the dataspace also allows the extending).
--   
--   <pre>
--   herr_t H5Pset_external(hid_t plist_id, const char *name, off_t offset,
--             hsize_t size);
--   </pre>
h5p_set_external :: HId_t -> CString -> COff -> HSize_t -> IO HErr_t
p_H5Pset_external :: FunPtr (HId_t -> CString -> COff -> HSize_t -> IO HErr_t)

-- | Returns the number of external files for this dataset, or negative on
--   failure.
--   
--   <pre>
--   int H5Pget_external_count(hid_t plist_id);
--   </pre>
h5p_get_external_count :: HId_t -> IO CInt
p_H5Pget_external_count :: FunPtr (HId_t -> IO CInt)

-- | Returns information about an external file. External files are
--   numbered from zero to N-1 where N is the value returned by
--   <a>h5p_get_external_count</a>. At most <tt>name_size</tt> characters
--   are copied into the <tt>name</tt> array. If the external file name is
--   longer than <tt>name_size</tt> with the null terminator, then the
--   return value is not null terminated (similar to strncpy()).
--   
--   If <tt>name_size</tt> is zero or <tt>name</tt> is the null pointer
--   then the external file name is not returned. If <tt>offset</tt> or
--   <tt>size</tt> are null pointers then the corresponding information is
--   not returned.
--   
--   See Also: <a>h5p_set_external</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_external(hid_t plist_id, unsigned idx, size_t name_size,
--             char *name/*out*/, off_t *offset/*out*/,
--             hsize_t *size/*out*/);
--   </pre>
h5p_get_external :: HId_t -> CUInt -> CSize -> OutArray CChar -> Out COff -> Out HSize_t -> IO HErr_t
p_H5Pget_external :: FunPtr (HId_t -> CUInt -> CSize -> OutArray CChar -> Out COff -> Out HSize_t -> IO HErr_t)

-- | Sets the compression method for a permanent or transient filter
--   pipeline (depending on whether <tt>plist_id</tt> is a dataset creation
--   or transfer property list) to <a>h5z_FILTER_SZIP</a>. Szip is a
--   special compression package that is said to be good for scientific
--   data.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_szip(hid_t plist_id, unsigned options_mask, unsigned pixels_per_block);
--   </pre>
h5p_set_szip :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_szip :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Sets the shuffling method for a permanent filter to
--   <a>h5z_FILTER_SHUFFLE</a> and bytes of the datatype of the array to be
--   shuffled
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_shuffle(hid_t plist_id);
--   </pre>
h5p_set_shuffle :: HId_t -> IO HErr_t
p_H5Pset_shuffle :: FunPtr (HId_t -> IO HErr_t)

-- | Sets nbit filter for a dataset creation property list
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_nbit(hid_t plist_id);
--   </pre>
h5p_set_nbit :: HId_t -> IO HErr_t
p_H5Pset_nbit :: FunPtr (HId_t -> IO HErr_t)

-- | Sets scaleoffset filter for a dataset creation property list and
--   user-supplied parameters
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> scale_factor :: <a>CInt</a> </tt></i> For integer
--   datatypes, this parameter will be minimum-bits, if this value is set
--   to 0, scaleoffset filter will calculate the minimum-bits. For
--   floating-point datatype, For variable-minimum-bits method, this will
--   be the decimal precision of the filter, For fixed-minimum-bits method,
--   this will be the minimum-bit of the filter.</li>
--   <li><i><tt> scale_type :: <a>H5Z_SO_scale_type_t</a> </tt></i> 0 for
--   floating-point variable-minimum-bits, 1 for floating-point
--   fixed-minimum-bits, other values, for integer datatype</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_scaleoffset(hid_t plist_id, H5Z_SO_scale_type_t scale_type, int scale_factor);
--   </pre>
h5p_set_scaleoffset :: HId_t -> H5Z_SO_scale_type_t -> CInt -> IO HErr_t
p_H5Pset_scaleoffset :: FunPtr (HId_t -> H5Z_SO_scale_type_t -> CInt -> IO HErr_t)

-- | Set the fill value for a dataset creation property list. The
--   <tt>value</tt> is interpretted as being of type 'type', which need not
--   be the same type as the dataset but the library must be able to
--   convert <tt>value</tt> to the dataset type when the dataset is
--   created. If <tt>value</tt> is NULL, it will be interpreted as
--   undefining fill value.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id,
--        const void *value);
--   </pre>
h5p_set_fill_value :: HId_t -> HId_t -> In a -> IO HErr_t
p_H5Pset_fill_value :: FunPtr (HId_t -> HId_t -> In a -> IO HErr_t)

-- | Queries the fill value property of a dataset creation property list.
--   The fill value is returned through the <tt>value</tt> pointer and the
--   memory is allocated by the caller. The fill value will be converted
--   from its current datatype to the specified 'type'.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id,
--        void *value/*out*/);
--   </pre>
h5p_get_fill_value :: HId_t -> HId_t -> Out a -> IO HErr_t
p_H5Pget_fill_value :: FunPtr (HId_t -> HId_t -> Out a -> IO HErr_t)

-- | Check if fill value is defined.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pfill_value_defined(hid_t plist, H5D_fill_value_t *status);
--   </pre>
h5p_fill_value_defined :: HId_t -> Out H5D_fill_value_t -> IO HErr_t
p_H5Pfill_value_defined :: FunPtr (HId_t -> Out H5D_fill_value_t -> IO HErr_t)

-- | Set space allocation time for dataset during creation. Valid values
--   are <a>h5d_ALLOC_TIME_DEFAULT</a>, <a>h5d_ALLOC_TIME_EARLY</a>,
--   <a>h5d_ALLOC_TIME_LATE</a>, <a>h5d_ALLOC_TIME_INCR</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t
--      alloc_time);
--   </pre>
h5p_set_alloc_time :: HId_t -> H5D_alloc_time_t -> IO HErr_t
p_H5Pset_alloc_time :: FunPtr (HId_t -> H5D_alloc_time_t -> IO HErr_t)

-- | Get space allocation time for dataset creation. Valid values are
--   <a>h5d_ALLOC_TIME_DEFAULT</a>, <a>h5d_ALLOC_TIME_EARLY</a>,
--   <a>h5d_ALLOC_TIME_LATE</a>, <a>h5d_ALLOC_TIME_INCR</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t
--      *alloc_time/*out*/);
--   </pre>
h5p_get_alloc_time :: HId_t -> Out H5D_alloc_time_t -> IO HErr_t
p_H5Pget_alloc_time :: FunPtr (HId_t -> Out H5D_alloc_time_t -> IO HErr_t)

-- | Set fill value writing time for dataset. Valid values are
--   <a>h5d_FILL_TIME_ALLOC</a> and <a>h5d_FILL_TIME_NEVER</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time);
--   </pre>
h5p_set_fill_time :: HId_t -> H5D_fill_time_t -> IO HErr_t
p_H5Pset_fill_time :: FunPtr (HId_t -> H5D_fill_time_t -> IO HErr_t)

-- | Get fill value writing time. Valid values are <tt>h5d_NEVER</tt> and
--   <tt>h5d_ALLOC</tt>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t
--      *fill_time/*out*/);
--   </pre>
h5p_get_fill_time :: HId_t -> Out H5D_fill_time_t -> IO HErr_t
p_H5Pget_fill_time :: FunPtr (HId_t -> Out H5D_fill_time_t -> IO HErr_t)

-- | Set the number of objects in the meta data cache and the maximum
--   number of chunks and bytes in the raw data chunk cache. Once set,
--   these values will override the values in the file access property
--   list. Each of these values can be individually unset (or not set at
--   all) by passing the macros: <tt>h5d_CHUNK_CACHE_NCHUNKS_DEFAULT</tt>,
--   <a>h5d_CHUNK_CACHE_NSLOTS_DEFAULT</a>, and/or
--   <a>h5d_CHUNK_CACHE_W0_DEFAULT</a> as appropriate.
--   
--   The <tt>rdcc_w0</tt> value should be between 0 and 1 inclusive and
--   indicates how much chunks that have been fully read or fully written
--   are favored for preemption. A value of zero means fully read or
--   written chunks are treated no differently than other chunks (the
--   preemption is strictly LRU) while a value of one means fully read
--   chunks are always preempted before other chunks.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_chunk_cache(hid_t dapl_id, size_t rdcc_nslots,
--          size_t rdcc_nbytes, double rdcc_w0);
--   </pre>
h5p_set_chunk_cache :: HId_t -> CSize -> CSize -> CDouble -> IO HErr_t
p_H5Pset_chunk_cache :: FunPtr (HId_t -> CSize -> CSize -> CDouble -> IO HErr_t)

-- | Retrieves the maximum possible number of elements in the meta data
--   cache and the maximum possible number of elements and bytes and the
--   <tt>rdcc_w0</tt> value in the raw data chunk cache. Any (or all)
--   arguments may be null pointers in which case the corresponding datum
--   is not returned. If these properties have not been set on this
--   property list, the default values for a file access property list are
--   returned.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_chunk_cache(hid_t dapl_id,
--          size_t *rdcc_nslots/*out*/,
--          size_t *rdcc_nbytes/*out*/,
--          double *rdcc_w0/*out*/);
--   </pre>
h5p_get_chunk_cache :: HId_t -> Out CSize -> Out CSize -> Out CDouble -> IO HErr_t
p_H5Pget_chunk_cache :: FunPtr (HId_t -> Out CSize -> Out CSize -> Out CDouble -> IO HErr_t)

-- | Sets data transform expression.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_data_transform(hid_t plist_id, const char* expression);
--   </pre>
h5p_set_data_transform :: HId_t -> CString -> IO HErr_t
p_H5Pset_data_transform :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Gets data transform expression.
--   
--   If <tt>expression</tt> is non-NULL then write up to <tt>size</tt>
--   bytes into that buffer and always return the length of the transform
--   name. Otherwise <tt>size</tt> is ignored and the function does not
--   store the expression, just returning the number of characters required
--   to store the expression. If an error occurs then the buffer pointed to
--   by <tt>expression</tt> (NULL or non-NULL) is unchanged and the
--   function returns a negative value. If a zero is returned for the
--   name's length, then there is no name associated with the ID.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   ssize_t H5Pget_data_transform(hid_t plist_id, char* expression /*out*/, size_t size);
--   </pre>
h5p_get_data_transform :: HId_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Pget_data_transform :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

-- | Given a dataset transfer property list, set the maximum size for the
--   type conversion buffer and background buffer and optionally supply
--   pointers to application-allocated buffers. If the buffer size is
--   smaller than the entire amount of data being transfered between
--   application and file, and a type conversion buffer or background
--   buffer is required then strip mining will be used.
--   
--   If <tt>tconv</tt> and/or <tt>bkg</tt> are null pointers then buffers
--   will be allocated and freed during the data transfer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_buffer(hid_t plist_id, size_t size, void *tconv,
--           void *bkg);
--   </pre>
h5p_set_buffer :: HId_t -> CSize -> Ptr a -> Ptr b -> IO HErr_t
p_H5Pset_buffer :: FunPtr (HId_t -> CSize -> Ptr a -> Ptr b -> IO HErr_t)

-- | Reads values previously set with <a>h5p_set_buffer</a>.
--   
--   Returns buffer size on success, 0 on failure.
--   
--   <pre>
--   size_t H5Pget_buffer(hid_t plist_id, void **tconv/*out*/,
--           void **bkg/*out*/);
--   </pre>
h5p_get_buffer :: HId_t -> Out (Ptr a) -> Out (Ptr b) -> IO CSize
p_H5Pget_buffer :: FunPtr (HId_t -> Out (Ptr a) -> Out (Ptr b) -> IO CSize)

-- | When reading or writing compound data types and the destination is
--   partially initialized and the read/write is intended to initialize the
--   other members, one must set this property to TRUE. Otherwise the I/O
--   pipeline treats the destination datapoints as completely
--   uninitialized.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_preserve(hid_t plist_id, hbool_t status);
--   </pre>
h5p_set_preserve :: HId_t -> HBool_t -> IO HErr_t
p_H5Pset_preserve :: FunPtr (HId_t -> HBool_t -> IO HErr_t)

-- | The inverse of <a>h5p_set_preserve</a>
--   
--   Returns TRUE or FALSE (C macros) on success, negative on failure.
--   
--   <pre>
--   int H5Pget_preserve(hid_t plist_id);
--   </pre>
h5p_get_preserve :: HId_t -> IO CInt
p_H5Pget_preserve :: FunPtr (HId_t -> IO CInt)

-- | Enable or disable error-detecting for a dataset reading process. This
--   error-detecting algorithm is whichever user chooses earlier. This
--   function cannot control writing process.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_edc_check(hid_t plist_id, H5Z_EDC_t check);
--   </pre>
h5p_set_edc_check :: HId_t -> H5Z_EDC_t -> IO HErr_t
p_H5Pset_edc_check :: FunPtr (HId_t -> H5Z_EDC_t -> IO HErr_t)

-- | <pre>
--   H5Z_EDC_t H5Pget_edc_check(hid_t plist_id);
--   </pre>
h5p_get_edc_check :: HId_t -> IO H5Z_EDC_t
p_H5Pget_edc_check :: FunPtr (HId_t -> IO H5Z_EDC_t)

-- | Sets user's callback function for dataset transfer property list. This
--   callback function defines what user wants to do if certain filter
--   fails.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_filter_callback(hid_t plist_id, H5Z_filter_func_t func,
--                                        void* op_data);
--   </pre>
h5p_set_filter_callback :: HId_t -> H5Z_filter_func_t a b -> InOut b -> IO HErr_t
p_H5Pset_filter_callback :: FunPtr (HId_t -> H5Z_filter_func_t a b -> InOut b -> IO HErr_t)

-- | Sets B-tree split ratios for a dataset transfer property list. The
--   split ratios determine what percent of children go in the first node
--   when a node splits. The <tt>left</tt> ratio is used when the splitting
--   node is the left-most node at its level in the tree; the
--   <tt>right</tt> ratio is when the splitting node is the right-most node
--   at its level; and the <tt>middle</tt> ratio for all other cases. A
--   node which is the only node at its level in the tree uses the
--   <tt>right</tt> ratio when it splits. All ratios are real numbers
--   between 0 and 1, inclusive.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_btree_ratios(hid_t plist_id, double left, double middle,
--          double right);
--   </pre>
h5p_set_btree_ratios :: HId_t -> CDouble -> CDouble -> CDouble -> IO HErr_t
p_H5Pset_btree_ratios :: FunPtr (HId_t -> CDouble -> CDouble -> CDouble -> IO HErr_t)

-- | Queries B-tree split ratios. See H5Pset_btree_ratios().
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_btree_ratios(hid_t plist_id, double *left/*out*/,
--          double *middle/*out*/,
--          double *right/*out*/);
--   </pre>
h5p_get_btree_ratios :: HId_t -> Out CDouble -> Out CDouble -> Out CDouble -> IO HErr_t
p_H5Pget_btree_ratios :: FunPtr (HId_t -> Out CDouble -> Out CDouble -> Out CDouble -> IO HErr_t)

-- | Sets the memory allocate/free pair for VL datatypes. The allocation
--   routine is called when data is read into a new array and the free
--   routine is called when <a>h5d_vlen_reclaim</a> is called. The
--   <tt>alloc_info</tt> and <tt>free_info</tt> are user parameters which
--   are passed to the allocation and freeing functions respectively. To
--   reset the allocate/free functions to the default setting of using the
--   system's malloc/free functions, call this routine with
--   <tt>alloc_func</tt> and <tt>free_func</tt> set to NULL.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_vlen_mem_manager(hid_t plist_id,
--          H5MM_allocate_t alloc_func,
--          void *alloc_info, H5MM_free_t free_func,
--          void *free_info);
--   </pre>
h5p_set_vlen_mem_manager :: HId_t -> H5MM_allocate_t allocInfo mem -> Ptr allocInfo -> H5MM_free_t freeInfo mem -> Ptr freeInfo -> IO HErr_t
p_H5Pset_vlen_mem_manager :: FunPtr (HId_t -> H5MM_allocate_t allocInfo mem -> Ptr allocInfo -> H5MM_free_t freeInfo mem -> Ptr freeInfo -> IO HErr_t)

-- | The inverse of <a>h5p_set_vlen_mem_manager</a>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_vlen_mem_manager(hid_t plist_id,
--          H5MM_allocate_t *alloc_func,
--          void **alloc_info,
--          H5MM_free_t *free_func,
--          void **free_info);
--   </pre>
h5p_get_vlen_mem_manager :: HId_t -> Out (H5MM_allocate_t allocInfo mem) -> Out (Ptr allocInfo) -> Out (H5MM_free_t freeInfo mem) -> Out (Ptr freeInfo) -> IO HErr_t
p_H5Pget_vlen_mem_manager :: FunPtr (HId_t -> Out (H5MM_allocate_t allocInfo mem) -> Out (Ptr allocInfo) -> Out (H5MM_free_t freeInfo mem) -> Out (Ptr freeInfo) -> IO HErr_t)

-- | Given a dataset transfer property list, set the number of "I/O
--   vectors" (offset and length pairs) which are to be accumulated in
--   memory before being issued to the lower levels of the library for
--   reading or writing the actual data. Increasing the number should give
--   better performance, but use more memory during hyperslab I/O. The
--   vector size must be greater than 1.
--   
--   The default is to use 1024 vectors for I/O during hyperslab
--   reading/writing.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_hyper_vector_size(hid_t fapl_id, size_t size);
--   </pre>
h5p_set_hyper_vector_size :: HId_t -> CSize -> IO HErr_t
p_H5Pset_hyper_vector_size :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Reads values previously set with <a>h5p_set_hyper_vector_size</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_hyper_vector_size(hid_t fapl_id, size_t *size/*out*/);
--   </pre>
h5p_get_hyper_vector_size :: HId_t -> Out CSize -> IO HErr_t
p_H5Pget_hyper_vector_size :: FunPtr (HId_t -> Out CSize -> IO HErr_t)

-- | Sets user's callback function for dataset transfer property list. This
--   callback function defines what user wants to do if there's exception
--   during datatype conversion.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void* operate_data);
--   </pre>
h5p_set_type_conv_cb :: HId_t -> H5T_conv_except_func_t a b -> InOut b -> IO HErr_t
p_H5Pset_type_conv_cb :: FunPtr (HId_t -> H5T_conv_except_func_t a b -> InOut b -> IO HErr_t)

-- | Gets callback function for dataset transfer property list. This
--   callback function defines what user wants to do if there's exception
--   during datatype conversion.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data);
--   </pre>
h5p_get_type_conv_cb :: HId_t -> Out (H5T_conv_except_func_t a b) -> Out (InOut b) -> IO HErr_t
p_H5Pget_type_conv_cb :: FunPtr (HId_t -> Out (H5T_conv_except_func_t a b) -> Out (InOut b) -> IO HErr_t)

-- | Set <tt>crt_intmd_group</tt> so that 'h5l_create_*', <a>h5o_link</a>,
--   etc. will create missing groups along the given path "name".
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd);
--   </pre>
h5p_set_create_intermediate_group :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_create_intermediate_group :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Returns the <tt>crt_intmd_group</tt>, which is set to create missing
--   groups during <a>h5o_link</a>, etc.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd /*out*/);
--   </pre>
h5p_get_create_intermediate_group :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_create_intermediate_group :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Set the "size hint" for creating local heaps for a group.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint);
--   </pre>
h5p_set_local_heap_size_hint :: HId_t -> CSize -> IO HErr_t
p_H5Pset_local_heap_size_hint :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Returns the local heap size hint, which is used for creating groups
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint /*out*/);
--   </pre>
h5p_get_local_heap_size_hint :: HId_t -> Out CSize -> IO HErr_t
p_H5Pget_local_heap_size_hint :: FunPtr (HId_t -> Out CSize -> IO HErr_t)

-- | Set the maximum # of links to store "compactly" and the minimum # of
--   links to store "densely". (These should overlap).
--   
--   Currently both of these must be updated at the same time.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense);
--   </pre>
h5p_set_link_phase_change :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_link_phase_change :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Returns the max. # of compact links &amp; the min. # of dense links,
--   which are used for storing groups
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact /*out*/, unsigned *min_dense /*out*/);
--   </pre>
h5p_get_link_phase_change :: HId_t -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_link_phase_change :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Set the estimates for the number of entries and length of each entry
--   name in a group.
--   
--   Currently both of these must be updated at the same time.
--   
--   <tt>est_num_entries</tt> applies only when the number of entries is
--   less than the <tt>max_compact</tt> # of entries (from
--   <a>h5p_set_link_phase_change</a>).
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len);
--   </pre>
h5p_set_est_link_info :: HId_t -> CUInt -> CUInt -> IO HErr_t
p_H5Pset_est_link_info :: FunPtr (HId_t -> CUInt -> CUInt -> IO HErr_t)

-- | Returns the est. # of links in a group &amp; the est. length of the
--   name of each link.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries /* out */, unsigned *est_name_len /* out */);
--   </pre>
h5p_get_est_link_info :: HId_t -> Out CUInt -> Out CUInt -> IO HErr_t
p_H5Pget_est_link_info :: FunPtr (HId_t -> Out CUInt -> Out CUInt -> IO HErr_t)

-- | Set the flags for creation order of links in a group
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags);
--   </pre>
h5p_set_link_creation_order :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_link_creation_order :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Returns the flag indicating that creation order is tracked for links
--   in a group.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags /* out */);
--   </pre>
h5p_get_link_creation_order :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_link_creation_order :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Sets the character encoding of the string.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding);
--   </pre>
h5p_set_char_encoding :: HId_t -> H5T_cset_t -> IO HErr_t
p_H5Pset_char_encoding :: FunPtr (HId_t -> H5T_cset_t -> IO HErr_t)

-- | Gets the character encoding of the string.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding /*out*/);
--   </pre>
h5p_get_char_encoding :: HId_t -> Out H5T_cset_t -> IO HErr_t
p_H5Pget_char_encoding :: FunPtr (HId_t -> Out H5T_cset_t -> IO HErr_t)

-- | Set the number of soft or UD link traversals allowed before the
--   library assumes it has found a cycle and aborts the traversal.
--   
--   The limit on soft or UD link traversals is designed to terminate link
--   traversal if one or more links form a cycle. However, users may have a
--   file with a legitimate path formed of a large number of soft or
--   user-defined links. This property can be used to allow traversal of as
--   many links as desired.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks);
--   </pre>
h5p_set_nlinks :: HId_t -> CSize -> IO HErr_t
p_H5Pset_nlinks :: FunPtr (HId_t -> CSize -> IO HErr_t)

-- | Gets the number of soft or user-defined links that can be traversed
--   before a failure occurs.
--   
--   Retrieves the current setting for the nlinks property on the given
--   property list.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks);
--   </pre>
h5p_get_nlinks :: HId_t -> Out CSize -> IO HErr_t
p_H5Pget_nlinks :: FunPtr (HId_t -> Out CSize -> IO HErr_t)

-- | Set a prefix to be applied to the path of any external links
--   traversed. The prefix is appended to the filename stored in the
--   external link.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_elink_prefix(hid_t plist_id, const char *prefix);
--   </pre>
h5p_set_elink_prefix :: HId_t -> CString -> IO HErr_t
p_H5Pset_elink_prefix :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Gets the prefix to be applied to any external link traversals made
--   using this property list.
--   
--   If the pointer is not NULL, it points to a user-allocated buffer.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size);
--   </pre>
h5p_get_elink_prefix :: HId_t -> OutArray CChar -> CSize -> IO CSSize
p_H5Pget_elink_prefix :: FunPtr (HId_t -> OutArray CChar -> CSize -> IO CSSize)

-- | Gets the file access property list identifier that is set for link
--   access property.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   hid_t H5Pget_elink_fapl(hid_t lapl_id);
--   </pre>
h5p_get_elink_fapl :: HId_t -> IO HId_t
p_H5Pget_elink_fapl :: FunPtr (HId_t -> IO HId_t)

-- | Sets the file access property list for link access
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id);
--   </pre>
h5p_set_elink_fapl :: HId_t -> HId_t -> IO HErr_t
p_H5Pset_elink_fapl :: FunPtr (HId_t -> HId_t -> IO HErr_t)

-- | Sets the file access flags to be used when traversing an external
--   link. This should be either <a>h5f_ACC_RDONLY</a> or
--   <a>h5f_ACC_RDWR</a>, or <a>h5f_ACC_DEFAULT</a> to unset the value.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_elink_acc_flags(hid_t lapl_id, unsigned flags);
--   </pre>
h5p_set_elink_acc_flags :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_elink_acc_flags :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Gets the file access flags to be used when traversing an external
--   link.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_elink_acc_flags(hid_t lapl_id, unsigned *flags);
--   </pre>
h5p_get_elink_acc_flags :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_elink_acc_flags :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Sets the file access flags to be used when traversing an external
--   link. This should be either <a>h5f_ACC_RDONLY</a> or
--   <a>h5f_ACC_RDWR</a>.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_elink_cb(hid_t lapl_id, H5L_elink_traverse_t func, void *op_data);
--   </pre>
h5p_set_elink_cb :: HId_t -> H5L_elink_traverse_t a -> Ptr a -> IO HErr_t
p_H5Pset_elink_cb :: FunPtr (HId_t -> H5L_elink_traverse_t a -> Ptr a -> IO HErr_t)

-- | Gets the file access flags to be used when traversing an external
--   link.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_elink_cb(hid_t lapl_id, H5L_elink_traverse_t *func, void **op_data);
--   </pre>
h5p_get_elink_cb :: HId_t -> Out (H5L_elink_traverse_t a) -> Out (Ptr a) -> IO HErr_t
p_H5Pget_elink_cb :: FunPtr (HId_t -> Out (H5L_elink_traverse_t a) -> Out (Ptr a) -> IO HErr_t)

-- | Set properties when copying an object (group, dataset, and datatype)
--   from one location to another
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> plist_id :: <a>HId_t</a> </tt></i> Property list to copy
--   object</li>
--   <li><i><tt> cpy_option :: <a>CUInt</a> </tt></i> Options to copy
--   object</li>
--   </ul>
--   
--   Possible values for <tt>cpy_option</tt> include:
--   
--   <ul>
--   <li><i><a>h5o_COPY_SHALLOW_HIERARCHY_FLAG</a></i> Copy only immediate
--   members</li>
--   <li><i><a>h5o_COPY_EXPAND_SOFT_LINK_FLAG</a> </i> Expand soft links
--   into new objects/</li>
--   <li><i><a>h5o_COPY_EXPAND_EXT_LINK_FLAG</a> </i> Expand external links
--   into new objects</li>
--   <li><i><a>h5o_COPY_EXPAND_REFERENCE_FLAG</a> </i> Copy objects that
--   are pointed by references</li>
--   <li><i><a>h5o_COPY_WITHOUT_ATTR_FLAG</a> </i> Copy object without
--   copying attributes</li>
--   </ul>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd);
--   </pre>
h5p_set_copy_object :: HId_t -> CUInt -> IO HErr_t
p_H5Pset_copy_object :: FunPtr (HId_t -> CUInt -> IO HErr_t)

-- | Returns the cpy_option, which is set for <a>h5o_copy</a> for copying
--   objects
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd /*out*/);
--   </pre>
h5p_get_copy_object :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_copy_object :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)

-- | Adds path to the list of paths to search first in the target file when
--   merging committed datatypes during H5Ocopy (i.e. when using the
--   H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG flag as set by
--   H5Pset_copy_object). If the source named dataype is not found in the
--   list of paths created by this function, the entire file will be
--   searched.
--   
--   Usage: H5Padd_merge_committed_dtype_path(plist_id, path) hid_t
--   plist_id; IN: Property list to copy object const char *path; IN: Path
--   to add to list
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Padd_merge_committed_dtype_path(hid_t plist_id, const char *path);
--   </pre>
h5p_add_merge_committed_dtype_path :: HId_t -> CString -> IO HErr_t
p_H5Padd_merge_committed_dtype_path :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Frees and clears the list of paths created by
--   H5Padd_merge_committed_dtype_path. A new list may then be created by
--   calling H5Padd_merge_committed_dtype_path again.
--   
--   Usage: H5Pfree_merge_committed_dtype_paths(plist_id) hid_t plist_id;
--   IN: Property list to copy object
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pfree_merge_committed_dtype_paths(hid_t plist_id);
--   </pre>
h5p_free_merge_committed_dtype_paths :: HId_t -> IO HErr_t
p_H5Pfree_merge_committed_dtype_paths :: FunPtr (HId_t -> IO HErr_t)

-- | Set the callback function when a matching committed datatype is not
--   found from the list of paths stored in the object copy property list.
--   H5Ocopy will invoke this callback before searching all committed
--   datatypes at destination.
--   
--   Usage: H5Pset_mcdt_search_cb(plist_id, H5O_mcdt_search_cb_t func, void
--   *op_data) hid_t plist_id; IN: Property list to copy object
--   H5O_mcdt_search_cb_t func; IN: The callback function void *op_data;
--   IN: The user data
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t func, void *op_data);
--   </pre>
h5p_set_mcdt_search_cb :: HId_t -> H5O_mcdt_search_cb_t a -> InOut a -> IO HErr_t
p_H5Pset_mcdt_search_cb :: FunPtr (HId_t -> H5O_mcdt_search_cb_t a -> InOut a -> IO HErr_t)

-- | Retrieves the callback function and user data from the specified
--   object copy property list.
--   
--   Usage: H5Pget_mcdt_search_cb(plist_id, H5O_mcdt_search_cb_t *func,
--   void **op_data) hid_t plist_id; IN: Property list to copy object
--   H5O_mcdt_search_cb_t *func; OUT: The callback function void **op_data;
--   OUT: The user data
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_mcdt_search_cb(hid_t plist_id, H5O_mcdt_search_cb_t *func, void **op_data);
--   </pre>
h5p_get_mcdt_search_cb :: HId_t -> Out (H5O_mcdt_search_cb_t a) -> Out (InOut a) -> IO HErr_t
p_H5Pget_mcdt_search_cb :: FunPtr (HId_t -> Out (H5O_mcdt_search_cb_t a) -> Out (InOut a) -> IO HErr_t)
h5p_encode2 :: HId_t -> In a -> Out CSize -> IO HErr_t
p_H5Pencode2 :: FunPtr (HId_t -> In a -> Out CSize -> IO HErr_t)
h5p_decode :: In a -> IO HId_t
p_H5Pdecode :: FunPtr (In a -> IO HId_t)
type H5P_prp_encode_func_t a b = FunPtr In a -> Out b -> Out CSize
type H5P_prp_decode_func_t a b = FunPtr In a -> Out b
h5p_set_file_space :: HId_t -> H5F_file_space_type_t -> HSize_t -> IO HErr_t
p_H5Pset_file_space :: FunPtr (HId_t -> H5F_file_space_type_t -> HSize_t -> IO HErr_t)
h5p_get_file_space :: HId_t -> Out H5F_file_space_type_t -> Out HSize_t -> IO HErr_t
p_H5Pget_file_space :: FunPtr (HId_t -> Out H5F_file_space_type_t -> Out HSize_t -> IO HErr_t)
h5p_get_metadata_read_attempts :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pget_metadata_read_attempts :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)
h5p_set_object_flush_cb :: HId_t -> H5F_flush_cb_t a -> Out a -> IO HErr_t
h5p_get_object_flush_cb :: HId_t -> H5F_flush_cb_t a -> Out (Out a) -> IO HErr_t
p_H5Pset_object_flush_cb :: FunPtr (HId_t -> H5F_flush_cb_t a -> Out a -> IO HErr_t)
h5p_set_mdc_log_options :: HId_t -> HBool_t -> CString -> HBool_t -> IO HErr_t
p_H5Pget_object_flush_cb :: FunPtr (HId_t -> H5F_flush_cb_t a -> Out (Out a) -> IO HErr_t)
p_H5Pset_mdc_log_options :: FunPtr (HId_t -> HBool_t -> CString -> HBool_t -> IO HErr_t)
h5p_get_mdc_log_options :: HId_t -> Out HBool_t -> Out CString -> Out CSize -> Out HBool_t -> IO HErr_t
p_H5Pget_mdc_log_options :: FunPtr (HId_t -> Out HBool_t -> Out CString -> Out CSize -> Out HBool_t -> IO HErr_t)
h5p_set_virtual :: HId_t -> HId_t -> CString -> CString -> HId_t -> IO HErr_t
h5p_get_virtual_count :: HId_t -> Out CSize -> IO HErr_t
p_H5Pset_virtual :: FunPtr (HId_t -> HId_t -> CString -> CString -> HId_t -> IO HErr_t)
h5p_get_virtual_vspace :: HId_t -> CSize -> IO HId_t
p_H5Pget_virtual_count :: FunPtr (HId_t -> Out CSize -> IO HErr_t)
h5p_get_virtual_srcspace :: HId_t -> CSize -> IO HId_t
p_H5Pget_virtual_vspace :: FunPtr (HId_t -> CSize -> IO HId_t)
p_H5Pget_virtual_srcspace :: FunPtr (HId_t -> CSize -> IO HId_t)
h5p_get_virtual_filename :: HId_t -> CSize -> Out CString -> CSize -> IO CSSize
p_H5Pget_virtual_filename :: FunPtr (HId_t -> CSize -> Out CString -> CSize -> IO CSSize)
h5p_get_virtual_dsetname :: HId_t -> CSize -> Out CString -> CSize -> IO CSSize
p_H5Pget_virtual_dsetname :: FunPtr (HId_t -> CSize -> Out CString -> CSize -> IO CSSize)
h5p_set_chunk_opts :: HId_t -> CUInt -> IO HErr_t
h5p_get_chunk_opts :: HId_t -> Out CUInt -> IO HErr_t
p_H5Pset_chunk_opts :: FunPtr (HId_t -> CUInt -> IO HErr_t)
p_H5Pget_chunk_opts :: FunPtr (HId_t -> Out CUInt -> IO HErr_t)
h5p_set_virtual_view :: HId_t -> H5D_vds_view_t -> IO HErr_t
h5p_get_virtual_view :: HId_t -> Out H5D_vds_view_t -> IO HErr_t
p_H5Pset_virtual_view :: FunPtr (HId_t -> H5D_vds_view_t -> IO HErr_t)
h5p_set_virtual_printf_gap :: HId_t -> HSize_t -> IO HErr_t
p_H5Pget_virtual_view :: FunPtr (HId_t -> Out H5D_vds_view_t -> IO HErr_t)
h5p_get_virtual_printf_gap :: HId_t -> Out HSize_t -> IO HErr_t
p_H5Pset_virtual_printf_gap :: FunPtr (HId_t -> HSize_t -> IO HErr_t)
p_H5Pget_virtual_printf_gap :: FunPtr (HId_t -> Out HSize_t -> IO HErr_t)
h5p_set_append_flush :: HId_t -> CUInt -> In HSize_t -> H5D_append_cb_t a -> In a -> IO HErr_t
p_H5Pset_append_flush :: FunPtr (HId_t -> CUInt -> In HSize_t -> H5D_append_cb_t a -> In a -> IO HErr_t)
h5p_get_append_flush :: HId_t -> CUInt -> In HSize_t -> H5D_append_cb_t a -> Out (Out a) -> IO HErr_t
h5p_set_efile_prefix :: HId_t -> CString -> IO HErr_t
p_H5Pget_append_flush :: FunPtr (HId_t -> CUInt -> In HSize_t -> H5D_append_cb_t a -> Out (Out a) -> IO HErr_t)
p_H5Pset_efile_prefix :: FunPtr (HId_t -> CString -> IO HErr_t)
h5p_get_efile_prefix :: HId_t -> Out CString -> CSize -> IO CSSize
p_H5Pget_efile_prefix :: FunPtr (HId_t -> Out CString -> CSize -> IO CSSize)
h5d_MPIO_NO_COLLECTIVE_MAX_CAUSE :: H5D_mpio_no_collective_cause_t

-- | We renamed the "root" of the property list class hierarchy
h5p_NO_CLASS :: HId_t

-- | Old version of <a>h5p_register2</a>.
--   
--   <pre>
--   herr_t H5Pregister1(hid_t cls_id, const char *name, size_t size,
--       void *def_value, H5P_prp_create_func_t prp_create,
--       H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
--       H5P_prp_delete_func_t prp_del, H5P_prp_copy_func_t prp_copy,
--       H5P_prp_close_func_t prp_close);
--   </pre>
h5p_register1 :: HId_t -> CString -> CSize -> Ptr a -> H5P_prp_create_func_t a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_close_func_t a -> IO HErr_t
p_H5Pregister1 :: FunPtr (HId_t -> CString -> CSize -> Ptr a -> H5P_prp_create_func_t a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_close_func_t a -> IO HErr_t)

-- | Old version of <a>h5p_insert2</a>.
--   
--   <pre>
--   herr_t H5Pinsert1(hid_t plist_id, const char *name, size_t size,
--       void *value, H5P_prp_set_func_t prp_set, H5P_prp_get_func_t prp_get,
--       H5P_prp_delete_func_t prp_delete, H5P_prp_copy_func_t prp_copy,
--       H5P_prp_close_func_t prp_close);
--   </pre>
h5p_insert1 :: HId_t -> CString -> CSize -> In a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_close_func_t a -> IO HErr_t
p_H5Pinsert1 :: FunPtr (HId_t -> CString -> CSize -> In a -> H5P_prp_set_func_t a -> H5P_prp_get_func_t a -> H5P_prp_delete_func_t a -> H5P_prp_copy_func_t a -> H5P_prp_close_func_t a -> IO HErr_t)

-- | This is the query counterpart of <a>h5p_set_filter</a> and returns
--   information about a particular filter number in a permanent or
--   transient pipeline depending on whether <tt>plist_id</tt> is a dataset
--   creation or transfer property list. On input, <tt>cd_nelmts</tt>
--   indicates the number of entries in the <tt>cd_values</tt> array
--   allocated by the caller while on exit it contains the number of values
--   defined by the filter. The <tt>idx</tt> should be a value between zero
--   and N-1 as described for <a>h5p_get_nfilters</a> and the function will
--   return failure if the filter number is out of range.
--   
--   <pre>
--   H5Z_filter_t H5Pget_filter1(hid_t plist_id, unsigned filter,
--       unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
--       unsigned cd_values[]/*out*/, size_t namelen, char name[]);
--   </pre>
h5p_get_filter1 :: HId_t -> CUInt -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> Out CChar -> IO H5Z_filter_t
p_H5Pget_filter1 :: FunPtr (HId_t -> CUInt -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> Out CChar -> IO H5Z_filter_t)

-- | This is an additional query counterpart of <a>h5p_set_filter</a> and
--   returns information about a particular filter in a permanent or
--   transient pipeline depending on whether <tt>plist_id</tt> is a dataset
--   creation or transfer property list. On input, <tt>cd_nelmts</tt>
--   indicates the number of entries in the <tt>cd_values</tt> array
--   allocated by the caller while on exit it contains the number of values
--   defined by the filter. The ID should be the filter ID to retrieve the
--   parameters for. If the filter is not set for the property list, an
--   error will be returned.
--   
--   <pre>
--   herr_t H5Pget_filter_by_id1(hid_t plist_id, H5Z_filter_t id,
--       unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/,
--       unsigned cd_values[]/*out*/, size_t namelen, char name[]/*out*/);
--   </pre>
h5p_get_filter_by_id1 :: HId_t -> H5Z_filter_t -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> IO HErr_t
p_H5Pget_filter_by_id1 :: FunPtr (HId_t -> H5Z_filter_t -> Out CUInt -> Out CSize -> OutArray CUInt -> CSize -> OutArray CChar -> IO HErr_t)
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5P.H5D_mpio_actual_chunk_opt_mode_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5P.H5D_mpio_actual_io_mode_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5P.H5D_mpio_no_collective_cause_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5P.H5D_mpio_actual_chunk_opt_mode_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5P.H5D_mpio_actual_io_mode_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5P.H5D_mpio_no_collective_cause_t


-- | H5FDmulti Implements a file driver which dispatches I/O requests to
--   other file drivers depending on the purpose of the address region
--   being accessed. For instance, all meta-data could be placed in one
--   file while all raw data goes to some other file.
module Bindings.HDF5.Raw.H5FD.Multi
h5fd_MULTI :: HId_t

-- | Initialize this driver by registering the driver with the library.
--   
--   On success, returns the driver ID for the multi driver. On failure,
--   returns a negative value.
--   
--   <pre>
--   hid_t H5FD_multi_init(void);
--   </pre>
h5fd_multi_init :: IO HId_t
p_H5FD_multi_init :: FunPtr (IO HId_t)

-- | Sets the file access property list <tt>fapl_id</tt> to use the multi
--   driver. The <tt>memb_map</tt> array maps memory usage types to other
--   memory usage types and is the mechanism which allows the caller to
--   specify how many files are created. The array contains
--   <tt>h5fd_MEM_NTYPES</tt> entries which are either the value
--   <tt>h5fd_MEM_DEFAULT</tt> or a memory usage type and the number of
--   unique values determines the number of files which are opened. For
--   each memory usage type which will be associated with a file the
--   <tt>memb_fapl</tt> array should have a property list and the
--   <tt>memb_name</tt> array should be a name generator (a printf-style
--   format with a %s which will be replaced with the name passed to
--   <a>h5fd_open</a>, usually from <tt>h5f_create</tt> or
--   <tt>h5f_open</tt>).
--   
--   If <tt>relax</tt> is set then opening an existing file for read-only
--   access will not fail if some file members are missing. This allows a
--   file to be accessed in a limited sense if just the meta data is
--   available.
--   
--   Default values for each of the optional arguments are:
--   
--   <ul>
--   <li><i><tt>memb_map</tt></i> The default member map has the value
--   <tt>h5fd_MEM_DEFAULT</tt> for each element.</li>
--   <li><i><tt>memb_fapl</tt></i> The value <tt>h5p_DEFAULT</tt> for each
--   element.</li>
--   <li><i><tt>memb_name</tt></i> The string "%s-X.h5" where "X" is one of
--   the letters "s" (<tt>h5fd_MEM_SUPER</tt>), "b"
--   (<tt>h5fd_MEM_BTREE</tt>), "r" (<tt>h5fd_MEM_DRAW</tt>), "g"
--   (<tt>h5fd_MEM_GHEAP</tt>), "l" (<tt>h5fd_MEM_LHEAP</tt>), "o"
--   (<tt>h5fd_MEM_OHDR</tt>).</li>
--   <li><i><tt>memb_addr</tt></i> The value <a>hADDR_UNDEF</a> for each
--   element.</li>
--   </ul>
--   
--   Example: To set up a multi file access property list which partitions
--   data into meta and raw files each being 1/2 of the address space one
--   would say (TODO: translate to Haskell):
--   
--   <pre>
--   H5FD_mem_t mt, memb_map[H5FD_MEM_NTYPES];
--   hid_t memb_fapl[H5FD_MEM_NTYPES];
--   const char *memb[H5FD_MEM_NTYPES];
--   haddr_t memb_addr[H5FD_MEM_NTYPES];
--   
--   // The mapping...
--   for (mt=0; mt&lt;H5FD_MEM_NTYPES; mt++) {
--       memb_map[mt] = H5FD_MEM_SUPER;
--   }
--   memb_map[H5FD_MEM_DRAW] = H5FD_MEM_DRAW;
--   
--   // Member information
--   memb_fapl[H5FD_MEM_SUPER] = H5P_DEFAULT;
--   memb_name[H5FD_MEM_SUPER] = "%s.meta";
--   memb_addr[H5FD_MEM_SUPER] = 0;
--   
--   memb_fapl[H5FD_MEM_DRAW] = H5P_DEFAULT;
--   memb_name[H5FD_MEM_DRAW] = "%s.raw";
--   memb_addr[H5FD_MEM_DRAW] = HADDR_MAX/2;
--   
--   hid_t fapl = H5Pcreate(H5P_FILE_ACCESS);
--   H5Pset_fapl_multi(fapl, memb_map, memb_fapl,
--                     memb_name, memb_addr, TRUE);
--   </pre>
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map,
--          const hid_t *memb_fapl, const char * const *memb_name,
--          const haddr_t *memb_addr, hbool_t relax);
--   </pre>
h5p_set_fapl_multi :: HId_t -> InArray H5FD_mem_t -> InArray HId_t -> InArray CString -> InArray HAddr_t -> HBool_t -> IO HErr_t
p_H5Pset_fapl_multi :: FunPtr (HId_t -> InArray H5FD_mem_t -> InArray HId_t -> InArray CString -> InArray HAddr_t -> HBool_t -> IO HErr_t)

-- | Returns information about the multi file access property list though
--   the function arguments which are the same as for
--   <a>h5p_set_fapl_multi</a> above.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/,
--          hid_t *memb_fapl/*out*/, char **memb_name/*out*/,
--          haddr_t *memb_addr/*out*/, hbool_t *relax/*out*/);
--   </pre>
h5p_get_fapl_multi :: HId_t -> OutArray H5FD_mem_t -> OutArray HId_t -> OutArray CString -> OutArray HAddr_t -> Out HBool_t -> IO HErr_t
p_H5Pget_fapl_multi :: FunPtr (HId_t -> OutArray H5FD_mem_t -> OutArray HId_t -> OutArray CString -> OutArray HAddr_t -> Out HBool_t -> IO HErr_t)

-- | Compatability function. Makes the multi driver act like the old split
--   driver which stored meta data in one file and raw data in another
--   file.
--   
--   If the raw or meta extension string contains a "%s", it will be
--   substituted by the filename given for <tt>h5f_open</tt> or
--   <tt>h5f_create</tt>. If no %s is found, one is inserted at the
--   beginning.
--   
--   Returns non-negative on success, negative on failure.
--   
--   <pre>
--   herr_t H5Pset_fapl_split(hid_t fapl, const char *meta_ext,
--          hid_t meta_plist_id, const char *raw_ext,
--          hid_t raw_plist_id);
--   </pre>
h5p_set_fapl_split :: HId_t -> CString -> HId_t -> CString -> HId_t -> IO HErr_t
p_H5Pset_fapl_split :: FunPtr (HId_t -> CString -> HId_t -> CString -> HId_t -> IO HErr_t)

module Bindings.HDF5.Raw.H5A

-- | Information struct for attribute (for
--   <a>h5a_get_info</a>/<a>h5a_get_info_by_idx</a>)
--   
--   Indicate if creation order is valid
--   
--   Creation order
--   
--   Character set of attribute name
--   
--   Size of raw data
data H5A_info_t
H5A_info_t :: HBool_t -> H5O_msg_crt_idx_t -> H5T_cset_t -> HSize_t -> H5A_info_t
[h5a_info_t'corder_valid] :: H5A_info_t -> HBool_t
[h5a_info_t'corder] :: H5A_info_t -> H5O_msg_crt_idx_t
[h5a_info_t'cset] :: H5A_info_t -> H5T_cset_t
[h5a_info_t'data_size] :: H5A_info_t -> HSize_t

-- | Typedef for <a>h5a_iterate2</a> callbacks.
--   
--   <pre>
--   typedef herr_t (*H5A_operator2_t)(hid_t location_id<i>*in*</i>,
--      const char *attr_name<i>*in*</i>, const H5A_info_t *ainfo<i>*in*</i>, void *op_data<i>*in,out*</i>);
--   </pre>
p'H5A_info_t'corder_valid :: Ptr H5A_info_t -> Ptr HBool_t
p'H5A_info_t'corder :: Ptr H5A_info_t -> Ptr H5O_msg_crt_idx_t
type H5A_operator2_t a = FunPtr HId_t -> CString -> In H5A_info_t -> InOut a -> IO HErr_t
p'H5A_info_t'cset :: Ptr H5A_info_t -> Ptr H5T_cset_t
p'H5A_info_t'data_size :: Ptr H5A_info_t -> Ptr HSize_t
h5a_create2 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Acreate2 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Creates an attribute on an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to be
--   attached to</li>
--   <li><i><tt> obj_name :: CString </tt></i> Name of object relative to
--   location</li>
--   <li><i><tt> attr_name :: CString </tt></i> Name of attribute to locate
--   and open</li>
--   <li><i><tt> type_id :: HId_t </tt></i> ID of datatype for
--   attribute</li>
--   <li><i><tt> space_id :: HId_t </tt></i> ID of dataspace for
--   attribute</li>
--   <li><i><tt> acpl_id :: HId_t </tt></i> ID of creation property list
--   (currently not used)</li>
--   <li><i><tt> aapl_id :: HId_t </tt></i> Attribute access property
--   list</li>
--   <li><i><tt> lapl_id :: HId_t </tt></i> Link access property list</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function creates an attribute which is attached to the object
--   specified with 'loc_id/obj_name'. The name specified with
--   <tt>attr_name</tt> for each attribute for an object must be unique for
--   that object. The <tt>type_id</tt> and <tt>space_id</tt> are created
--   with the H5T and H5S interfaces respectively. The <tt>aapl_id</tt>
--   property list is currently unused, but will be used in the future for
--   optional attribute access properties. The attribute ID returned from
--   this function must be released with h5a_close or resource leaks will
--   develop.
--   
--   <pre>
--   hid_t   H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
--       hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id);
--   </pre>
h5a_create_by_name :: HId_t -> CString -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Acreate_by_name :: FunPtr (HId_t -> CString -> CString -> HId_t -> HId_t -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Opens an attribute for an object by looking up the attribute name
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object that attribute is
--   attached to</li>
--   <li><i><tt> attr_name :: CString </tt></i> Name of attribute to locate
--   and open</li>
--   <li><i><tt> aapl_id :: HId_t </tt></i> Attribute access property
--   list</li>
--   </ul>
--   
--   Returns ID of attribute on success, negative on failure
--   
--   This function opens an existing attribute for access. The attribute
--   name specified is used to look up the corresponding attribute for the
--   object. The attribute ID returned from this function must be released
--   with <a>h5a_close</a> or resource leaks will develop.
--   
--   <pre>
--   hid_t   H5Aopen(hid_t obj_id, const char *attr_name, hid_t aapl_id);
--   </pre>
h5a_open :: HId_t -> CString -> HId_t -> IO HId_t
p_H5Aopen :: FunPtr (HId_t -> CString -> HId_t -> IO HId_t)

-- | Opens an attribute for an object by looking up the attribute name
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object that attribute is
--   attached to</li>
--   <li><i><tt> obj_name :: CString </tt></i> Name of object relative to
--   location</li>
--   <li><i><tt> attr_name :: CString </tt></i> Name of attribute to locate
--   and open</li>
--   <li><i><tt> aapl_id :: HId_t </tt></i> Attribute access property
--   list</li>
--   <li><i><tt> lapl_id :: HId_t </tt></i> Link access property list</li>
--   </ul>
--   
--   Returns ID of attribute on success, negative on failure
--   
--   This function opens an existing attribute for access. The attribute
--   name specified is used to look up the corresponding attribute for the
--   object. The attribute ID returned from this function must be released
--   with <a>h5a_close</a> or resource leaks will develop.
--   
--   <pre>
--   hid_t   H5Aopen_by_name(hid_t loc_id, const char *obj_name,
--       const char *attr_name, hid_t aapl_id, hid_t lapl_id);
--   </pre>
h5a_open_by_name :: HId_t -> CString -> CString -> HId_t -> HId_t -> IO HId_t
p_H5Aopen_by_name :: FunPtr (HId_t -> CString -> CString -> HId_t -> HId_t -> IO HId_t)
h5a_open_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> HId_t -> IO HId_t
p_H5Aopen_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> HId_t -> IO HId_t)

-- | Write out data to an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to write</li>
--   <li><i><tt> dtype_id :: HId_t </tt></i> Memory datatype of buffer</li>
--   <li><i><tt> buf :: InArray a </tt></i> Buffer of data to write</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function writes a complete attribute to disk.
--   
--   <pre>
--   herr_t  H5Awrite(hid_t attr_id, hid_t type_id, const void *buf);
--   </pre>
h5a_write :: HId_t -> HId_t -> InArray a -> IO HErr_t
p_H5Awrite :: FunPtr (HId_t -> HId_t -> InArray a -> IO HErr_t)

-- | Read in data from an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to read</li>
--   <li><i><tt> dtype_id :: HId_t </tt></i> Memory datatype of buffer</li>
--   <li><i><tt> buf :: OutArray a </tt></i> Buffer for data to read</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function reads a complete attribute from disk.
--   
--   <pre>
--   herr_t  H5Aread(hid_t attr_id, hid_t type_id, void *buf);
--   </pre>
h5a_read :: HId_t -> HId_t -> OutArray a -> IO HErr_t
p_H5Aread :: FunPtr (HId_t -> HId_t -> OutArray a -> IO HErr_t)

-- | Close an attribute ID
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to release access
--   to</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function releases an attribute from use. Further use of the
--   attribute ID will result in undefined behavior.
--   
--   <pre>
--   herr_t  H5Aclose(hid_t attr_id);
--   </pre>
h5a_close :: HId_t -> IO HErr_t
p_H5Aclose :: FunPtr (HId_t -> IO HErr_t)

-- | Gets a copy of the dataspace for an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to get dataspace
--   of</li>
--   </ul>
--   
--   Returns a dataspace ID on success, negative on failure
--   
--   This function retrieves a copy of the dataspace for an attribute. The
--   dataspace ID returned from this function must be released with
--   <tt>h5s_close</tt> or resource leaks will develop.
--   
--   <pre>
--   hid_t   H5Aget_space(hid_t attr_id);
--   </pre>
h5a_get_space :: HId_t -> IO HId_t
p_H5Aget_space :: FunPtr (HId_t -> IO HId_t)

-- | Gets a copy of the datatype for an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to get datatype
--   of</li>
--   </ul>
--   
--   Returns a datatype ID on success, negative on failure
--   
--   This function retrieves a copy of the datatype for an attribute. The
--   datatype ID returned from this function must be released with
--   <a>h5t_close</a> or resource leaks will develop.
--   
--   <pre>
--   hid_t   H5Aget_type(hid_t attr_id);
--   </pre>
h5a_get_type :: HId_t -> IO HId_t
p_H5Aget_type :: FunPtr (HId_t -> IO HId_t)

-- | Gets a copy of the creation property list for an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to get name of</li>
--   </ul>
--   
--   This function returns the ID of a copy of the attribute's creation
--   property list, or negative on failure. The resulting ID must be closed
--   with <tt>h5p_close</tt> or resource leaks will occur.
--   
--   <pre>
--   hid_t   H5Aget_create_plist(hid_t attr_id);
--   </pre>
h5a_get_create_plist :: HId_t -> IO HId_t
p_H5Aget_create_plist :: FunPtr (HId_t -> IO HId_t)

-- | Gets a copy of the name for an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to get name of</li>
--   <li><i><tt> buf_size :: CSize </tt></i> The size of the buffer to
--   store the string in.</li>
--   <li><i><tt> buf :: OutArray CChar </tt></i> Buffer to store name
--   in</li>
--   </ul>
--   
--   This function returns the length of the attribute's name (which may be
--   longer than <tt>buf_size</tt>) on success or negative for failure.
--   
--   This function retrieves the name of an attribute for an attribute ID.
--   Up to <tt>buf_size</tt> characters are stored in <tt>buf</tt> followed
--   by a '0' string terminator. If the name of the attribute is longer
--   than <tt>buf_size</tt>-1, the string terminator is stored in the last
--   position of the buffer to properly terminate the string.
--   
--   <pre>
--   ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf);
--   </pre>
h5a_get_name :: HId_t -> CSize -> OutArray CChar -> IO CSSize
p_H5Aget_name :: FunPtr (HId_t -> CSize -> OutArray CChar -> IO CSSize)

-- | Retrieve name of an attribute, according to the order within an index.
--   
--   Same pattern of behavior as <a>h5i_get_name</a>
--   
--   Returns non-negative length of name, with information in <tt>name</tt>
--   buffer on success / negative on failure
--   
--   <pre>
--   ssize_t H5Aget_name_by_idx(hid_t loc_id, const char *obj_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
--       char *name /*out*/, size_t size, hid_t lapl_id);
--   </pre>
h5a_get_name_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray CChar -> CSize -> HId_t -> IO CSSize
p_H5Aget_name_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> OutArray CChar -> CSize -> HId_t -> IO CSSize)

-- | Returns the amount of storage size that is allocated for this
--   attribute. The return value may be zero if no data has been stored.
--   
--   <pre>
--   hsize_t H5Aget_storage_size(hid_t attr_id);
--   </pre>
h5a_get_storage_size :: HId_t -> IO HSize_t
p_H5Aget_storage_size :: FunPtr (HId_t -> IO HSize_t)

-- | Retrieve information about an attribute.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t  H5Aget_info(hid_t attr_id, H5A_info_t *ainfo /*out*/);
--   </pre>
h5a_get_info :: HId_t -> Out H5A_info_t -> IO HErr_t
p_H5Aget_info :: FunPtr (HId_t -> Out H5A_info_t -> IO HErr_t)

-- | Retrieve information about an attribute by name.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t  H5Aget_info_by_name(hid_t loc_id, const char *obj_name,
--       const char *attr_name, H5A_info_t *ainfo /*out*/, hid_t lapl_id);
--   </pre>
h5a_get_info_by_name :: HId_t -> CString -> CString -> Out H5A_info_t -> HId_t -> IO HErr_t
p_H5Aget_info_by_name :: FunPtr (HId_t -> CString -> CString -> Out H5A_info_t -> HId_t -> IO HErr_t)

-- | Retrieve information about an attribute, according to the order within
--   an index.
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t  H5Aget_info_by_idx(hid_t loc_id, const char *obj_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n,
--       H5A_info_t *ainfo /*out*/, hid_t lapl_id);
--   </pre>
h5a_get_info_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5A_info_t -> HId_t -> IO HErr_t
p_H5Aget_info_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> Out H5A_info_t -> HId_t -> IO HErr_t)

-- | Rename an attribute
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t  H5Arename(hid_t loc_id, const char *old_name, const char *new_name);
--   </pre>
h5a_rename :: HId_t -> CString -> CString -> IO HErr_t
p_H5Arename :: FunPtr (HId_t -> CString -> CString -> IO HErr_t)

-- | Rename an attribute
--   
--   Returns non-negative on success / negative on failure
--   
--   <pre>
--   herr_t  H5Arename_by_name(hid_t loc_id, const char *obj_name,
--       const char *old_attr_name, const char *new_attr_name, hid_t lapl_id);
--   </pre>
h5a_rename_by_name :: HId_t -> CString -> CString -> CString -> HId_t -> IO HErr_t
p_H5Arename_by_name :: FunPtr (HId_t -> CString -> CString -> CString -> HId_t -> IO HErr_t)

-- | Calls a user's function for each attribute on an object.
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Base location for object</li>
--   <li><i><tt> idx_type :: H5_index_t </tt></i> Type of index to use</li>
--   <li><i><tt> order :: H5_iter_order_t </tt></i> Order to iterate over
--   index</li>
--   <li><i><tt> idx :: InOut HSize_t </tt></i> Starting (IN) &amp; Ending
--   (OUT) attribute in index &amp; order</li>
--   <li><i><tt> op :: H5A_operator2_t a </tt></i> User's function to pass
--   each attribute to</li>
--   <li><i><tt> op_data :: InOut a </tt></i> User's data to pass through
--   to iterator operator function</li>
--   </ul>
--   
--   Returns a negative value if an error occurs, the return value of the
--   last operator if it was non-zero (which can be a negative value), or
--   zero if all attributes were processed.
--   
--   This function interates over the attributes of dataset or group
--   specified with <tt>loc_id</tt> &amp; <tt>obj_name</tt>. For each
--   attribute of the object, the <tt>op_data</tt> and some additional
--   information (specified below) are passed to the <tt>op</tt> function.
--   The iteration begins with the '*idx' object in the group and the next
--   attribute to be processed by the operator is returned in '*idx'.
--   
--   The operation receives the ID for the group or dataset being iterated
--   over (<tt>loc_id</tt>), the name of the current attribute about the
--   object (<tt>attr_name</tt>), the attribute's "info" struct
--   (<tt>ainfo</tt>) and the pointer to the operator data passed in to
--   H5Aiterate2 (<tt>op_data</tt>). The return values from an operator
--   are:
--   
--   <ul>
--   <li>Zero causes the iterator to continue, returning zero when all
--   attributes have been processed.</li>
--   <li>Positive causes the iterator to immediately return that positive
--   value, indicating short-circuit success. The iterator can be restarted
--   at the next attribute.</li>
--   <li>Negative causes the iterator to immediately return that value,
--   indicating failure. The iterator can be restarted at the next
--   attribute.</li>
--   </ul>
--   
--   <pre>
--   herr_t  H5Aiterate2(hid_t loc_id, H5_index_t idx_type,
--       H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data);
--   </pre>
h5a_iterate2 :: HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5A_operator2_t a -> InOut a -> IO HErr_t
p_H5Aiterate2 :: FunPtr (HId_t -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5A_operator2_t a -> InOut a -> IO HErr_t)

-- | Calls a user's function for each attribute on an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Base location for object</li>
--   <li><i><tt> obj_name :: CString </tt></i> Name of object relative to
--   location</li>
--   <li><i><tt> idx_type :: H5_index_t </tt></i> Type of index to use</li>
--   <li><i><tt> order :: H5_iter_order_t </tt></i> Order to iterate over
--   index</li>
--   <li><i><tt> idx :: InOut HSize_t </tt></i> Starting (IN) &amp; Ending
--   (OUT) attribute in index &amp; order</li>
--   <li><i><tt> op :: H5A_operator2_t a </tt></i> H5A_operator2_t IN:
--   User's function to pass each attribute to</li>
--   <li><i><tt> op_data :: InOut a </tt></i> User's data to pass through
--   to iterator operator function</li>
--   <li><i><tt> lapl_id :: HId_t </tt></i> Link access property list</li>
--   </ul>
--   
--   Returns a negative value if an error occurs, the return value of the
--   last operator if it was non-zero (which can be a negative value), or
--   zero if all attributes were processed.
--   
--   This function interates over the attributes of dataset or group
--   specified with <tt>loc_id</tt> &amp; <tt>obj_name</tt>. For each
--   attribute of the object, the <tt>op_data</tt> and some additional
--   information (specified below) are passed to the <tt>op</tt> function.
--   The iteration begins with the '*idx' object in the group and the next
--   attribute to be processed by the operator is returned in '*idx'.
--   
--   The operation receives the ID for the group or dataset being iterated
--   over (<tt>loc_id</tt>), the name of the current attribute about the
--   object (<tt>attr_name</tt>), the attribute's "info" struct
--   (<tt>ainfo</tt>) and the pointer to the operator data passed in to
--   H5Aiterate_by_name (<tt>op_data</tt>). The return values from an
--   operator are:
--   
--   <ul>
--   <li>Zero causes the iterator to continue, returning zero when all
--   attributes have been processed.</li>
--   <li>Positive causes the iterator to immediately return that positive
--   value, indicating short-circuit success. The iterator can be restarted
--   at the next attribute.</li>
--   <li>Negative causes the iterator to immediately return that value,
--   indicating failure. The iterator can be restarted at the next
--   attribute.</li>
--   </ul>
--   
--   <pre>
--   herr_t  H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
--       H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data,
--       hid_t lapd_id);
--   </pre>
h5a_iterate_by_name :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5A_operator2_t a -> InOut a -> HId_t -> IO HErr_t
p_H5Aiterate_by_name :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> InOut HSize_t -> H5A_operator2_t a -> InOut a -> HId_t -> IO HErr_t)

-- | Deletes an attribute from a location
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to
--   have attribute deleted from</li>
--   <li><i><tt> name :: CString </tt></i> Name of attribute to delete</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function removes the named attribute from a dataset or group.
--   
--   <pre>
--   herr_t  H5Adelete(hid_t loc_id, const char *name);
--   </pre>
h5a_delete :: HId_t -> CString -> IO HErr_t
p_H5Adelete :: FunPtr (HId_t -> CString -> IO HErr_t)

-- | Deletes an attribute from a location
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to
--   have attribute deleted from</li>
--   <li><i><tt> obj_name :: CString </tt></i> Name of object relative to
--   location</li>
--   <li><i><tt> attr_name :: CString </tt></i> Name of attribute to
--   delete</li>
--   <li><i><tt> lapl_id :: HId_t </tt></i> Link access property list</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function removes the named attribute from a dataset or group.
--   
--   <pre>
--   herr_t  H5Adelete_by_name(hid_t loc_id, const char *obj_name,
--       const char *attr_name, hid_t lapl_id);
--   </pre>
h5a_delete_by_name :: HId_t -> CString -> CString -> HId_t -> IO HErr_t
p_H5Adelete_by_name :: FunPtr (HId_t -> CString -> CString -> HId_t -> IO HErr_t)

-- | Deletes an attribute from a location, according to the order within an
--   index
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Base location for object</li>
--   <li><i><tt> obj_name :: CString </tt></i> Name of object relative to
--   location</li>
--   <li><i><tt> idx_type :: H5_index_t </tt></i> Type of index to use</li>
--   <li><i><tt> order :: H5_iter_order_t </tt></i> Order to iterate over
--   index</li>
--   <li><i><tt> n :: HSize_t </tt></i> Offset within index</li>
--   <li><i><tt> lapl_id :: HId_t </tt></i> Link access property list</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function removes an attribute from an object, using the
--   <tt>idx_type</tt> index to delete the <tt>n</tt>th attribute in
--   <tt>order</tt> direction in the index. The object is specified
--   relative to the <tt>loc_id</tt> with the <tt>obj_name</tt> path. To
--   remove an attribute on the object specified by <tt>loc_id</tt>, pass
--   in <tt>"."</tt> for <tt>obj_name</tt>. The link access property list,
--   <tt>lapl_id</tt>, controls aspects of the group hierarchy traversal
--   when using the <tt>obj_name</tt> to locate the final object to operate
--   on.
--   
--   <pre>
--   herr_t  H5Adelete_by_idx(hid_t loc_id, const char *obj_name,
--       H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id);
--   </pre>
h5a_delete_by_idx :: HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HErr_t
p_H5Adelete_by_idx :: FunPtr (HId_t -> CString -> H5_index_t -> H5_iter_order_t -> HSize_t -> HId_t -> IO HErr_t)

-- | Checks if an attribute with a given name exists on an opened object.
--   
--   <pre>
--   htri_t H5Aexists(hid_t obj_id, const char *attr_name);
--   </pre>
h5a_exists :: HId_t -> CString -> IO HTri_t
p_H5Aexists :: FunPtr (HId_t -> CString -> IO HTri_t)

-- | Checks if an attribute with a given name exists on an object.
--   
--   <pre>
--   htri_t H5Aexists_by_name(hid_t obj_id, const char *obj_name,
--       const char *attr_name, hid_t lapl_id);
--   </pre>
h5a_exists_by_name :: HId_t -> CString -> CString -> HId_t -> IO HTri_t
p_H5Aexists_by_name :: FunPtr (HId_t -> CString -> CString -> HId_t -> IO HTri_t)

-- | Typedef for <a>h5a_iterate1</a> callbacks
--   
--   <pre>
--   typedef herr_t (*H5A_operator1_t)(hid_t location_id/*in*/,
--       const char *attr_name/*in*/, void *operator_data/*in,out*/);
--   </pre>
type H5A_operator1_t a = FunPtr HId_t -> CString -> InOut a -> IO HErr_t

-- | Creates an attribute on an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to be
--   attached to</li>
--   <li><i><tt> name :: CString </tt></i> Name of attribute to create</li>
--   <li><i><tt> type_id :: HId_t </tt></i> ID of datatype for
--   attribute</li>
--   <li><i><tt> space_id :: HId_t </tt></i> ID of dataspace for
--   attribute</li>
--   <li><i><tt> plist_id :: HId_t </tt></i> ID of creation property list
--   (currently not used)</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function creates an attribute which is attached to the object
--   specified with <tt>location_id</tt>. The name specified with
--   <tt>name</tt> for each attribute for an object must be unique for that
--   object. The <tt>type_id</tt> and <tt>space_id</tt> are created with
--   the H5T and H5S interfaces respectively. The attribute ID returned
--   from this function must be released with <a>h5a_close</a> or resource
--   leaks will develop.
--   
--   Note: Deprecated in favor of <a>h5a_create2</a>
--   
--   <pre>
--   hid_t   H5Acreate1(hid_t loc_id, const char *name, hid_t type_id,
--       hid_t space_id, hid_t acpl_id);
--   </pre>
h5a_create1 :: HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t
p_H5Acreate1 :: FunPtr (HId_t -> CString -> HId_t -> HId_t -> HId_t -> IO HId_t)

-- | Opens an attribute for an object by looking up the attribute name
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to be
--   attached to</li>
--   <li><i><tt> name :: CString </tt></i> Name of attribute to locate and
--   open</li>
--   </ul>
--   
--   Returns ID of attribute on success, negative on failure
--   
--   This function opens an existing attribute for access. The attribute
--   name specified is used to look up the corresponding attribute for the
--   object. The attribute ID returned from this function must be released
--   with H5Aclose or resource leaks will develop.
--   
--   The location object may be either a group or a dataset, both of which
--   may have any sort of attribute.
--   
--   Note: Deprecated in favor of <a>h5a_open</a>
--   
--   <pre>
--   hid_t   H5Aopen_name(hid_t loc_id, const char *name);
--   </pre>
h5a_open_name :: HId_t -> CString -> IO HId_t
p_H5Aopen_name :: FunPtr (HId_t -> CString -> IO HId_t)

-- | Opens the n'th attribute for an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object that attribute is
--   attached to</li>
--   <li><i><tt> idx :: CUInt </tt></i> Index (0-based) attribute to
--   open</li>
--   </ul>
--   
--   Returns ID of attribute on success, negative on failure
--   
--   This function opens an existing attribute for access. The attribute
--   index specified is used to look up the corresponding attribute for the
--   object. The attribute ID returned from this function must be released
--   with <a>h5a_close</a> or resource leaks will develop.
--   
--   The location object may be either a group or a dataset, both of which
--   may have any sort of attribute.
--   
--   Note: Deprecated in favor of <a>h5a_open_by_idx</a>
--   
--   <pre>
--   hid_t   H5Aopen_idx(hid_t loc_id, unsigned idx);
--   </pre>
h5a_open_idx :: HId_t -> CUInt -> IO HId_t
p_H5Aopen_idx :: FunPtr (HId_t -> CUInt -> IO HId_t)

-- | Determines the number of attributes attached to an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to be
--   queried</li>
--   </ul>
--   
--   Returns number of attributes on success, negative on failure
--   
--   This function returns the number of attributes attached to a dataset
--   or group, <tt>location_id</tt>.
--   
--   Note: Deprecated in favor of <a>h5o_get_info</a>
--   
--   <pre>
--   int H5Aget_num_attrs(hid_t loc_id);
--   </pre>
h5a_get_num_attrs :: HId_t -> IO CInt
p_H5Aget_num_attrs :: FunPtr (HId_t -> IO CInt)

-- | Calls a user's function for each attribute on an object
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> loc_id :: HId_t </tt></i> Object (dataset or group) to be
--   iterated over</li>
--   <li><i><tt> attr_num :: InOut CUInt </tt></i> Starting (IN) &amp;
--   Ending (OUT) attribute number</li>
--   <li><i><tt> op :: H5A_operator1_t a </tt></i> User's function to pass
--   each attribute to</li>
--   <li><i><tt> op_data :: InOut a </tt></i> User's data to pass through
--   to iterator operator function</li>
--   </ul>
--   
--   Returns a negative value if something is wrong, the return value of
--   the last operator if it was non-zero, or zero if all attributes were
--   processed.
--   
--   This function interates over the attributes of dataset or group
--   specified with <tt>loc_id</tt>. For each attribute of the object, the
--   <tt>op_data</tt> and some additional information (specified below) are
--   passed to the <tt>op</tt> function. The iteration begins with the
--   <tt>attr_num</tt> object in the group and the next attribute to be
--   processed by the operator is returned in <tt>attr_num</tt>.
--   
--   The operation receives the ID for the group or dataset being iterated
--   over (<tt>loc_id</tt>), the name of the current attribute about the
--   object (<tt>attr_name</tt>) and the pointer to the operator data
--   passed in to <a>h5a_iterate1</a> (<tt>op_data</tt>). The return values
--   from an operator are:
--   
--   <ul>
--   <li>Zero causes the iterator to continue, returning zero when all
--   attributes have been processed.</li>
--   <li>Positive causes the iterator to immediately return that positive
--   value, indicating short-circuit success. The iterator can be restarted
--   at the next attribute.</li>
--   <li>Negative causes the iterator to immediately return that value,
--   indicating failure. The iterator can be restarted at the next
--   attribute.</li>
--   </ul>
--   
--   Note: Deprecated in favor of <a>h5a_iterate2</a>
--   
--   <pre>
--   herr_t  H5Aiterate1(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op,
--       void *op_data);
--   </pre>
h5a_iterate1 :: HId_t -> InOut CUInt -> H5A_operator1_t a -> InOut a -> IO HErr_t
p_H5Aiterate1 :: FunPtr (HId_t -> InOut CUInt -> H5A_operator1_t a -> InOut a -> IO HErr_t)
instance GHC.Classes.Eq Bindings.HDF5.Raw.H5A.H5A_info_t
instance GHC.Internal.Show.Show Bindings.HDF5.Raw.H5A.H5A_info_t
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Raw.H5A.H5A_info_t

module Bindings.HDF5.Raw

module Bindings.HDF5.Raw.Util
hboolToBool :: HBool_t -> Bool
boolToHBool :: Bool -> HBool_t
test_htri_t :: HTri_t -> Maybe Bool

module Bindings.HDF5.Core.HDFResultType

-- | Types returned from HDF5 library functions which always signal failure
--   the same way.
class HDFResultType t
isError :: HDFResultType t => t -> Bool
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5I.H5I_type_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5T.H5T_norm_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5T.H5T_order_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5T.H5T_pad_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5T.H5T_str_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5.H5_index_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5.H5_iter_order_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5.HAddr_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5.HErr_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5I.HId_t
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Raw.H5.HTri_t

module Bindings.HDF5.Core
data IndexType
ByName :: IndexType
ByCreationOrder :: IndexType
data IterOrder
Increasing :: IterOrder
Decreasing :: IterOrder
Native :: IterOrder
data IH_Info
IH_Info :: !HSize -> !HSize -> IH_Info
[indexSize] :: IH_Info -> !HSize
[heapSize] :: IH_Info -> !HSize
newtype HSize
HSize :: HSize_t -> HSize
hSize :: HSize -> HSize_t
newtype HSSize
HSSize :: HSSize_t -> HSSize
hSSize :: HSSize -> HSSize_t
newtype HAddr
HAddr :: HAddr_t -> HAddr
hAddr :: HAddr -> HAddr_t
indexTypeCode :: IndexType -> H5_index_t
iterOrderCode :: IterOrder -> H5_iter_order_t
instance GHC.Internal.Bits.Bits Bindings.HDF5.Core.HAddr
instance GHC.Internal.Bits.Bits Bindings.HDF5.Core.HSSize
instance GHC.Internal.Bits.Bits Bindings.HDF5.Core.HSize
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Core.HAddr
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Core.HSSize
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Core.HSize
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Core.IndexType
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Core.IterOrder
instance GHC.Internal.Enum.Enum Bindings.HDF5.Core.HAddr
instance GHC.Internal.Enum.Enum Bindings.HDF5.Core.HSSize
instance GHC.Internal.Enum.Enum Bindings.HDF5.Core.HSize
instance GHC.Internal.Enum.Enum Bindings.HDF5.Core.IndexType
instance GHC.Internal.Enum.Enum Bindings.HDF5.Core.IterOrder
instance GHC.Classes.Eq Bindings.HDF5.Core.HAddr
instance GHC.Classes.Eq Bindings.HDF5.Core.HSSize
instance GHC.Classes.Eq Bindings.HDF5.Core.HSize
instance GHC.Classes.Eq Bindings.HDF5.Core.IH_Info
instance GHC.Classes.Eq Bindings.HDF5.Core.IndexType
instance GHC.Classes.Eq Bindings.HDF5.Core.IterOrder
instance GHC.Internal.Real.Integral Bindings.HDF5.Core.HAddr
instance GHC.Internal.Real.Integral Bindings.HDF5.Core.HSSize
instance GHC.Internal.Real.Integral Bindings.HDF5.Core.HSize
instance GHC.Internal.Num.Num Bindings.HDF5.Core.HAddr
instance GHC.Internal.Num.Num Bindings.HDF5.Core.HSSize
instance GHC.Internal.Num.Num Bindings.HDF5.Core.HSize
instance GHC.Classes.Ord Bindings.HDF5.Core.HAddr
instance GHC.Classes.Ord Bindings.HDF5.Core.HSSize
instance GHC.Classes.Ord Bindings.HDF5.Core.HSize
instance GHC.Classes.Ord Bindings.HDF5.Core.IH_Info
instance GHC.Classes.Ord Bindings.HDF5.Core.IndexType
instance GHC.Classes.Ord Bindings.HDF5.Core.IterOrder
instance GHC.Internal.Read.Read Bindings.HDF5.Core.HAddr
instance GHC.Internal.Read.Read Bindings.HDF5.Core.HSSize
instance GHC.Internal.Read.Read Bindings.HDF5.Core.HSize
instance GHC.Internal.Read.Read Bindings.HDF5.Core.IH_Info
instance GHC.Internal.Read.Read Bindings.HDF5.Core.IndexType
instance GHC.Internal.Read.Read Bindings.HDF5.Core.IterOrder
instance GHC.Internal.Real.Real Bindings.HDF5.Core.HAddr
instance GHC.Internal.Real.Real Bindings.HDF5.Core.HSSize
instance GHC.Internal.Real.Real Bindings.HDF5.Core.HSize
instance GHC.Internal.Show.Show Bindings.HDF5.Core.HAddr
instance GHC.Internal.Show.Show Bindings.HDF5.Core.HSSize
instance GHC.Internal.Show.Show Bindings.HDF5.Core.HSize
instance GHC.Internal.Show.Show Bindings.HDF5.Core.IH_Info
instance GHC.Internal.Show.Show Bindings.HDF5.Core.IndexType
instance GHC.Internal.Show.Show Bindings.HDF5.Core.IterOrder
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Core.HAddr
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Core.HSSize
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Core.HSize

module Bindings.HDF5.Error
data ErrorClassID
hdfError :: ErrorClassID
data HDF5Exception
errorStack :: HDF5Exception -> [HDF5Error]
data HDF5Error
HDF5Error :: !ErrorClassID -> !Maybe MajorErrCode -> !Maybe MinorErrCode -> !Integer -> !ByteString -> !ByteString -> !ByteString -> HDF5Error
[classId] :: HDF5Error -> !ErrorClassID
[majorNum] :: HDF5Error -> !Maybe MajorErrCode
[minorNum] :: HDF5Error -> !Maybe MinorErrCode
[line] :: HDF5Error -> !Integer
[funcName] :: HDF5Error -> !ByteString
[fileName] :: HDF5Error -> !ByteString
[description] :: HDF5Error -> !ByteString

-- | Types returned from HDF5 library functions which always signal failure
--   the same way.
class HDFResultType t
isError :: HDFResultType t => t -> Bool
withErrorWhen :: (t -> Bool) -> IO t -> IO t
withErrorWhen_ :: (t -> Bool) -> IO t -> IO ()
withErrorCheck :: HDFResultType t => IO t -> IO t
withErrorCheck_ :: HDFResultType t => IO t -> IO ()
htriToBool :: IO HTri_t -> IO Bool
registerErrorClass :: ByteString -> ByteString -> ByteString -> IO ErrorClassID
unregisterErrorClass :: ErrorClassID -> IO ()
createMajorErrCode :: ErrorClassID -> ByteString -> IO MajorErrCode
releaseMajorErrCode :: MajorErrCode -> IO ()
createMinorErrCode :: ErrorClassID -> ByteString -> IO MinorErrCode
releaseMinorErrCode :: MinorErrCode -> IO ()
data ErrorStack
createErrorStack :: IO ErrorStack
closeErrorStack :: ErrorStack -> IO ()
getCurrentErrorStack :: IO ErrorStack
setCurrentErrorStack :: ErrorStack -> IO ()
instance GHC.Classes.Eq Bindings.HDF5.Error.ErrorClassID
instance GHC.Classes.Eq Bindings.HDF5.Error.ErrorStack
instance GHC.Classes.Eq Bindings.HDF5.Error.HDF5Error
instance GHC.Classes.Eq Bindings.HDF5.Error.HDF5Exception
instance GHC.Internal.Exception.Type.Exception Bindings.HDF5.Error.HDF5Exception
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Error.ErrorClassID
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Error.ErrorStack
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Error.ErrorClassID
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Error.ErrorStack
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Error.ErrorClassID
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Error.ErrorStack
instance GHC.Classes.Ord Bindings.HDF5.Error.ErrorClassID
instance GHC.Classes.Ord Bindings.HDF5.Error.ErrorStack
instance GHC.Classes.Ord Bindings.HDF5.Error.HDF5Error
instance GHC.Classes.Ord Bindings.HDF5.Error.HDF5Exception
instance GHC.Internal.Show.Show Bindings.HDF5.Error.ErrorClassID
instance GHC.Internal.Show.Show Bindings.HDF5.Error.ErrorStack
instance GHC.Internal.Show.Show Bindings.HDF5.Error.HDF5Error
instance GHC.Internal.Show.Show Bindings.HDF5.Error.HDF5Exception

module Bindings.HDF5.PropertyList
data PropertyListClassID
root :: PropertyListClassID
objectCreate :: PropertyListClassID
fileCreate :: PropertyListClassID
fileAccess :: PropertyListClassID
datasetCreate :: PropertyListClassID
datasetAccess :: PropertyListClassID
datasetXfer :: PropertyListClassID
fileMount :: PropertyListClassID
groupCreate :: PropertyListClassID
groupAccess :: PropertyListClassID
datatypeCreate :: PropertyListClassID
datatypeAccess :: PropertyListClassID
stringCreate :: PropertyListClassID
attributeCreate :: PropertyListClassID
objectCopy :: PropertyListClassID
linkCreate :: PropertyListClassID
linkAccess :: PropertyListClassID
getClassName :: PropertyListClassID -> IO ByteString
data PropertyListID
class (HId t, FromHId t) => PropertyListOrClass t
class PropertyListOrClass t => PropertyList t
staticPlistClass :: PropertyList t => Tagged t PropertyListClassID

-- | A <tt><a>Tagged</a> s b</tt> value is a value <tt>b</tt> with an
--   attached phantom type <tt>s</tt>. This can be used in place of the
--   more traditional but less safe idiom of passing in an undefined value
--   with the type, because unlike an <tt>(s -&gt; b)</tt>, a
--   <tt><a>Tagged</a> s b</tt> can't try to use the argument <tt>s</tt> as
--   a real value.
--   
--   Moreover, you don't have to rely on the compiler to inline away the
--   extra argument, because the newtype is "free"
--   
--   <a>Tagged</a> has kind <tt>k -&gt; * -&gt; *</tt> if the compiler
--   supports <tt>PolyKinds</tt>, therefore there is an extra <tt>k</tt>
--   showing in the instance haddocks that may cause confusion.
newtype Tagged (s :: k) b
Tagged :: b -> Tagged (s :: k) b
[unTagged] :: Tagged (s :: k) b -> b
castPropertyList :: (PropertyList a, PropertyList b) => a -> IO (Maybe b)
createPropertyList :: PropertyList t => IO t
createPropertyListWithClass :: PropertyListClassID -> IO PropertyListID
propertyExists :: PropertyList t => t -> ByteString -> IO Bool
getPropertySize :: PropertyListOrClass t => t -> ByteString -> IO CSize
getNProps :: PropertyListOrClass t => t -> IO CSize
getPropertyListClass :: PropertyList t => t -> IO PropertyListClassID
getPropertyListClassParent :: PropertyListClassID -> IO PropertyListClassID
propertyListsEqual :: (PropertyListOrClass a, PropertyListOrClass b) => a -> b -> IO Bool
propertyListIsA :: PropertyList t => t -> PropertyListClassID -> IO Bool
closePropertyListClass :: PropertyListClassID -> IO ()
closePropertyList :: PropertyList t => t -> IO ()
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.PropertyListClassID
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.PropertyListID
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.PropertyListClassID
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.PropertyListID
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.PropertyListClassID
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.PropertyListID
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.PropertyListClassID
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.PropertyListID
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.PropertyListClassID
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.PropertyListID
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.PropertyListID

module Bindings.HDF5.PropertyList.STRCPL
data STRCPL
class PropertyList t => StringCreationPropertyList t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.STRCPL.STRCPL
instance Bindings.HDF5.PropertyList.STRCPL.StringCreationPropertyList Bindings.HDF5.PropertyList.STRCPL.STRCPL

module Bindings.HDF5.PropertyList.LCPL
data LCPL
class StringCreationPropertyList t => LinkCreationPropertyList t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.PropertyList.LCPL.LinkCreationPropertyList Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.LCPL.LCPL
instance Bindings.HDF5.PropertyList.STRCPL.StringCreationPropertyList Bindings.HDF5.PropertyList.LCPL.LCPL

module Bindings.HDF5.PropertyList.OCPYPL
data OCPYPL
class PropertyList t => ObjectCopyPropertyList t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.PropertyList.OCPYPL.ObjectCopyPropertyList Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.OCPYPL.OCPYPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.OCPYPL.OCPYPL

module Bindings.HDF5.PropertyList.OCPL
data OCPL
class PropertyList t => ObjectCreationPropertyList t
setAttrPhaseChange :: ObjectCreationPropertyList t => t -> CUInt -> CUInt -> IO ()
getAttrPhaseChange :: ObjectCreationPropertyList t => t -> IO (CUInt, CUInt)
setAttrCreationOrder :: ObjectCreationPropertyList t => t -> CUInt -> IO ()
getAttrCreationOrder :: ObjectCreationPropertyList t => t -> IO CUInt
setObjTrackTimes :: ObjectCreationPropertyList t => t -> Bool -> IO ()
getObjTrackTimes :: ObjectCreationPropertyList t => t -> IO Bool
modifyFilter :: ObjectCreationPropertyList t => t -> H5Z_filter_t -> Bool -> Vector CUInt -> IO ()
setFilter :: ObjectCreationPropertyList t => t -> H5Z_filter_t -> Bool -> Vector CUInt -> IO ()
getNFilters :: ObjectCreationPropertyList t => t -> IO CInt
allFiltersAvail :: ObjectCreationPropertyList t => t -> IO Bool
removeFilter :: ObjectCreationPropertyList t => t -> H5Z_filter_t -> IO ()
setDeflate :: ObjectCreationPropertyList t => t -> CUInt -> IO ()
setFletcher32 :: ObjectCreationPropertyList t => t -> IO ()
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.PropertyList.OCPL.ObjectCreationPropertyList Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.OCPL.OCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.OCPL.OCPL

module Bindings.HDF5.PropertyList.TCPL
data TCPL
class ObjectCreationPropertyList t => DatatypeCreationPropertyList t
instance Bindings.HDF5.PropertyList.TCPL.DatatypeCreationPropertyList Bindings.HDF5.PropertyList.TCPL.TCPL
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.PropertyList.OCPL.ObjectCreationPropertyList Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.TCPL.TCPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.TCPL.TCPL

module Bindings.HDF5.PropertyList.GCPL
data GCPL
class ObjectCreationPropertyList t => GroupCreationPropertyList t
setLocalHeapSizeHint :: GroupCreationPropertyList gcpl => gcpl -> CSize -> IO ()
getLocalHeapSizeHint :: GroupCreationPropertyList gcpl => gcpl -> IO CSize
setLinkPhaseChange :: GroupCreationPropertyList gcpl => gcpl -> CUInt -> CUInt -> IO ()
getLinkPhaseChange :: GroupCreationPropertyList gcpl => gcpl -> IO (CUInt, CUInt)
getEstLinkInfo :: GroupCreationPropertyList gcpl => gcpl -> IO (CUInt, CUInt)
setEstLinkInfo :: GroupCreationPropertyList gcpl => gcpl -> CUInt -> CUInt -> IO ()
data CreationOrder
Tracked :: CreationOrder
Indexed :: CreationOrder
setLinkCreationOrder :: GroupCreationPropertyList gcpl => gcpl -> CreationOrder -> IO ()
getLinkCreationOrder :: GroupCreationPropertyList gcpl => gcpl -> IO CreationOrder
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.GCPL.CreationOrder
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.GCPL.CreationOrder
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.GCPL.CreationOrder
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.PropertyList.GCPL.GroupCreationPropertyList Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.PropertyList.OCPL.ObjectCreationPropertyList Bindings.HDF5.PropertyList.GCPL.GCPL
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.GCPL.CreationOrder
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.GCPL.GCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.GCPL.GCPL
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.GCPL.CreationOrder
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.GCPL.CreationOrder

module Bindings.HDF5.PropertyList.FCPL
data FCPL
class GroupCreationPropertyList t => FileCreationPropertyList t
setUserblock :: FileCreationPropertyList fcpl => fcpl -> HSize -> IO ()
getUserblock :: FileCreationPropertyList fcpl => fcpl -> IO HSize
setSizes :: FileCreationPropertyList fcpl => fcpl -> CSize -> CSize -> IO ()
getSizes :: FileCreationPropertyList fcpl => fcpl -> IO (CSize, CSize)
setSymK :: FileCreationPropertyList fcpl => fcpl -> Maybe CUInt -> Maybe CUInt -> IO ()
getSymK :: FileCreationPropertyList fcpl => fcpl -> IO (CUInt, CUInt)
setIstoreK :: FileCreationPropertyList fcpl => fcpl -> CUInt -> IO ()
getIstoreK :: FileCreationPropertyList fcpl => fcpl -> IO CUInt
setSharedMesgNIndexes :: FileCreationPropertyList fcpl => fcpl -> CUInt -> IO ()
getSharedMesgNIndexes :: FileCreationPropertyList fcpl => fcpl -> IO CUInt
setSharedMesgIndex :: FileCreationPropertyList fcpl => fcpl -> CUInt -> CUInt -> CUInt -> IO ()
getSharedMesgIndex :: FileCreationPropertyList fcpl => fcpl -> CUInt -> IO (CUInt, CUInt)
setSharedMesgPhaseChange :: FileCreationPropertyList fcpl => fcpl -> CUInt -> CUInt -> IO ()
getSharedMesgPhaseChange :: FileCreationPropertyList fcpl => fcpl -> IO (CUInt, CUInt)
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.PropertyList.FCPL.FileCreationPropertyList Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.PropertyList.GCPL.GroupCreationPropertyList Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.PropertyList.OCPL.ObjectCreationPropertyList Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.FCPL.FCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.FCPL.FCPL

module Bindings.HDF5.PropertyList.FMPL
data FMPL
class PropertyList t => FileMountPropertyList t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.PropertyList.FMPL.FileMountPropertyList Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.FMPL.FMPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.FMPL.FMPL

module Bindings.HDF5.PropertyList.FAPL
data FAPL
class PropertyList t => FileAccessPropertyList t
setAlignment :: FileAccessPropertyList fapl => fapl -> HSize -> HSize -> IO ()
getAlignment :: FileAccessPropertyList fapl => fapl -> IO (HSize, HSize)
setFamilyOffset :: FileAccessPropertyList fapl => fapl -> HSize -> IO ()
getFamilyOffset :: FileAccessPropertyList fapl => fapl -> IO HSize
setFCloseDegree :: FileAccessPropertyList fapl => fapl -> H5F_close_degree_t -> IO ()
getFCloseDegree :: FileAccessPropertyList fapl => fapl -> IO H5F_close_degree_t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.PropertyList.FAPL.FileAccessPropertyList Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.FAPL.FAPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.FAPL.FAPL

module Bindings.HDF5.PropertyList.LAPL
data LAPL
class PropertyList t => LinkAccessPropertyList t
setNLinks :: LinkAccessPropertyList lapl => lapl -> CSize -> IO ()
getNLinks :: LinkAccessPropertyList lapl => lapl -> IO CSize
setELinkPrefix :: LinkAccessPropertyList lapl => lapl -> ByteString -> IO ()
getELinkPrefix :: LinkAccessPropertyList lapl => lapl -> IO ByteString
setELinkFAPL :: LinkAccessPropertyList lapl => lapl -> FAPL -> IO ()
getELinkFAPL :: LinkAccessPropertyList lapl => lapl -> IO FAPL
setELinkAccFlags :: LinkAccessPropertyList lapl => lapl -> CUInt -> IO ()
getELinkAccFlags :: LinkAccessPropertyList lapl => lapl -> IO CUInt
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.PropertyList.LAPL.LinkAccessPropertyList Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.LAPL.LAPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.LAPL.LAPL

module Bindings.HDF5.PropertyList.TAPL
data TAPL
class LinkAccessPropertyList t => DatatypeAccessPropertyList t
instance Bindings.HDF5.PropertyList.TAPL.DatatypeAccessPropertyList Bindings.HDF5.PropertyList.TAPL.TAPL
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.PropertyList.LAPL.LinkAccessPropertyList Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.TAPL.TAPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.TAPL.TAPL

module Bindings.HDF5.PropertyList.GAPL
data GAPL
class LinkAccessPropertyList t => GroupAccessPropertyList t
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.PropertyList.GAPL.GroupAccessPropertyList Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.PropertyList.LAPL.LinkAccessPropertyList Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.GAPL.GAPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.GAPL.GAPL

module Bindings.HDF5.PropertyList.DAPL
data DAPL
class LinkAccessPropertyList t => DatasetAccessPropertyList t
setChunkCache :: DatasetAccessPropertyList dapl => dapl -> CSize -> CSize -> CDouble -> IO ()
getChunkCache :: DatasetAccessPropertyList dapl => dapl -> IO (CSize, CSize, CDouble)
instance Bindings.HDF5.PropertyList.DAPL.DatasetAccessPropertyList Bindings.HDF5.PropertyList.DAPL.DAPL
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.PropertyList.LAPL.LinkAccessPropertyList Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.DAPL.DAPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.DAPL.DAPL

module Bindings.HDF5.PropertyList.DXPL
data DXPL
class PropertyList t => DatasetTransferPropertyList t
instance Bindings.HDF5.PropertyList.DXPL.DatasetTransferPropertyList Bindings.HDF5.PropertyList.DXPL.DXPL
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DXPL.DXPL
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.DXPL.DXPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.DXPL.DXPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.DXPL.DXPL
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.DXPL.DXPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.DXPL.DXPL

module Bindings.HDF5.Object
data ObjectId
class (HId t, FromHId t) => Object t
staticObjectType :: Object t => Tagged t (Maybe ObjectType)
data ObjectType
FileObj :: ObjectType
GroupObj :: ObjectType
DatatypeObj :: ObjectType
DataspaceObj :: ObjectType
DatasetObj :: ObjectType
AttrObj :: ObjectType
objectTypeOf :: Object t => t -> Maybe ObjectType
objectTypeOf1 :: Object t => c t -> Maybe ObjectType
uncheckedCastObject :: (Object a, Object b) => a -> b
castObject :: (Object src, Object dst) => src -> IO (Maybe dst)
openObject :: Location loc => loc -> ByteString -> Maybe LAPL -> IO ObjectId
getObjectType :: Object obj => obj -> IO ObjectType
linkObject :: (Object obj, Location loc) => obj -> loc -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
closeObject :: Object obj => obj -> IO ()
copyObject :: (Location src, Location dst) => src -> ByteString -> dst -> ByteString -> Maybe OCPYPL -> Maybe LCPL -> IO ()
doesObjectExist :: Location loc => loc -> ByteString -> Maybe LAPL -> IO Bool
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Object.ObjectType
instance GHC.Internal.Enum.Enum Bindings.HDF5.Object.ObjectType
instance GHC.Classes.Eq Bindings.HDF5.Object.ObjectId
instance GHC.Classes.Eq Bindings.HDF5.Object.ObjectType
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Object.ObjectId
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Object.ObjectId
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Object.ObjectId
instance Bindings.HDF5.Object.Object Bindings.HDF5.Object.ObjectId
instance GHC.Classes.Ord Bindings.HDF5.Object.ObjectType
instance GHC.Internal.Read.Read Bindings.HDF5.Object.ObjectType
instance GHC.Internal.Show.Show Bindings.HDF5.Object.ObjectType
instance GHC.Internal.Foreign.Storable.Storable Bindings.HDF5.Object.ObjectId

module Bindings.HDF5.Datatype.Internal
newtype Datatype
Datatype :: HId_t -> Datatype
class Storable t => NativeType t
nativeTypeId :: NativeType t => Tagged t Datatype
nativeTypeOf :: NativeType t => t -> Datatype
nativeTypeOf1 :: NativeType t => f t -> Datatype
hdfTypeOf :: NativeType t => t -> HId_t
hdfTypeOf1 :: NativeType t => f t -> HId_t
data Class
Integer :: Class
Float :: Class
Time :: Class
String :: Class
BitField :: Class
Opaque :: Class
Compound :: Class
Reference :: Class
Enum :: Class
VLen :: Class
Array :: Class
classCode :: Class -> H5T_class_t
classFromCode :: H5T_class_t -> Class
data CSet
ASCII :: CSet
Reserved2 :: CSet
Reserved3 :: CSet
Reserved4 :: CSet
Reserved5 :: CSet
Reserved6 :: CSet
Reserved7 :: CSet
Reserved8 :: CSet
Reserved9 :: CSet
Reserved10 :: CSet
Reserved11 :: CSet
Reserved12 :: CSet
Reserved13 :: CSet
Reserved14 :: CSet
Reserved15 :: CSet
UTF8 :: CSet
cSetCode :: CSet -> H5T_cset_t
cSetFromCode :: H5T_cset_t -> CSet
data ByteOrder
LE :: ByteOrder
BE :: ByteOrder
VAX :: ByteOrder
Mixed :: ByteOrder
byteOrderCode :: Maybe ByteOrder -> H5T_order_t
byteOrder :: H5T_order_t -> Maybe ByteOrder
data Pad
Zero :: Pad
One :: Pad
Background :: Pad
padCode :: Pad -> H5T_pad_t
padFromCode :: H5T_pad_t -> Pad
data Normalization
Implied :: Normalization
MSBSet :: Normalization
normalization :: H5T_norm_t -> Maybe Normalization
data StringPad
NullTerm :: StringPad
NullPad :: StringPad
SpacePad :: StringPad
StringPad_Reserved3 :: StringPad
StringPad_Reserved4 :: StringPad
StringPad_Reserved5 :: StringPad
StringPad_Reserved6 :: StringPad
StringPad_Reserved7 :: StringPad
StringPad_Reserved8 :: StringPad
StringPad_Reserved9 :: StringPad
StringPad_Reserved10 :: StringPad
StringPad_Reserved11 :: StringPad
StringPad_Reserved12 :: StringPad
StringPad_Reserved13 :: StringPad
StringPad_Reserved14 :: StringPad
StringPad_Reserved15 :: StringPad
stringPadCode :: StringPad -> H5T_str_t
stringPadFromCode :: H5T_str_t -> StringPad
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.Class
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Datatype.Internal.StringPad
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.Class
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Internal.Enum.Enum Bindings.HDF5.Datatype.Internal.StringPad
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.Class
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.Datatype
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Classes.Eq Bindings.HDF5.Datatype.Internal.StringPad
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Datatype.Internal.Datatype
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Datatype.Internal.Datatype
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Datatype.Internal.Datatype
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CChar
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CDouble
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CFloat
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CInt
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CLLong
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CLong
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CSChar
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CShort
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CUChar
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CUInt
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CULLong
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CULong
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Foreign.C.Types.CUShort
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Types.Double
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Types.Float
instance Bindings.HDF5.Datatype.Internal.NativeType Bindings.HDF5.Core.HAddr
instance Bindings.HDF5.Datatype.Internal.NativeType Bindings.HDF5.Raw.H5.HBool_t
instance Bindings.HDF5.Datatype.Internal.NativeType Bindings.HDF5.Raw.H5.HErr_t
instance Bindings.HDF5.Datatype.Internal.NativeType Bindings.HDF5.Core.HSSize
instance Bindings.HDF5.Datatype.Internal.NativeType Bindings.HDF5.Core.HSize
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Types.Int
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Int.Int16
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Int.Int32
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Int.Int64
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Int.Int8
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Types.Word
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Word.Word16
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Word.Word32
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Word.Word64
instance Bindings.HDF5.Datatype.Internal.NativeType GHC.Internal.Word.Word8
instance Bindings.HDF5.Object.Object Bindings.HDF5.Datatype.Internal.Datatype
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.Class
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Classes.Ord Bindings.HDF5.Datatype.Internal.StringPad
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.Class
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Internal.Read.Read Bindings.HDF5.Datatype.Internal.StringPad
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.ByteOrder
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.CSet
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.Class
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.Normalization
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.Pad
instance GHC.Internal.Show.Show Bindings.HDF5.Datatype.Internal.StringPad

module Bindings.HDF5.PropertyList.DCPL
data DCPL
class ObjectCreationPropertyList t => DatasetCreationPropertyList t
data Layout
CompactLayout :: Layout
ContiguousLayout :: Layout
ChunkedLayout :: Layout
setLayout :: DatasetCreationPropertyList t => t -> Layout -> IO ()
getLayout :: DatasetCreationPropertyList t => t -> IO Layout
setChunk :: DatasetCreationPropertyList t => t -> [HSize] -> IO ()
getChunk :: DatasetCreationPropertyList t => t -> IO [HSize]
setExternal :: DatasetCreationPropertyList t => t -> ByteString -> COff -> HSize -> IO ()
getExternalCount :: DatasetCreationPropertyList t => t -> IO CInt
getExternalN :: DatasetCreationPropertyList t => t -> CUInt -> CSize -> IO (ByteString, COff, HSize)
getExternal :: DatasetCreationPropertyList t => t -> CUInt -> IO (ByteString, COff, HSize)
setSZip :: DatasetCreationPropertyList t => t -> CUInt -> CUInt -> IO ()
setShuffle :: DatasetCreationPropertyList t => t -> IO ()
setNBit :: DatasetCreationPropertyList t => t -> IO ()
data ScaleType
FloatDScale :: ScaleType
FloatEScale :: ScaleType
IntScale :: ScaleType
setScaleOffset :: DatasetCreationPropertyList t => t -> ScaleType -> CInt -> IO ()
setFillValue :: (DatasetCreationPropertyList t, NativeType a) => t -> a -> IO ()
getFillValue :: (DatasetCreationPropertyList t, NativeType a) => t -> IO a
data FillValueDefaultType
Undefined :: FillValueDefaultType
DefaultFillValue :: FillValueDefaultType
UserDefined :: FillValueDefaultType
fillValueDefined :: DatasetCreationPropertyList t => t -> IO FillValueDefaultType
data AllocTime
DefaultAllocTime :: AllocTime
Early :: AllocTime
Late :: AllocTime
Incr :: AllocTime
setAllocTime :: DatasetCreationPropertyList t => t -> AllocTime -> IO ()
getAllocTime :: DatasetCreationPropertyList t => t -> IO AllocTime
data FillTime
Alloc :: FillTime
Never :: FillTime
IfSet :: FillTime
setFillTime :: DatasetCreationPropertyList t => t -> FillTime -> IO ()
getFillTime :: DatasetCreationPropertyList t => t -> IO FillTime
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Internal.Enum.Bounded Bindings.HDF5.PropertyList.DCPL.ScaleType
instance Bindings.HDF5.PropertyList.DCPL.DatasetCreationPropertyList Bindings.HDF5.PropertyList.DCPL.DCPL
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Internal.Enum.Enum Bindings.HDF5.PropertyList.DCPL.ScaleType
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.DCPL
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Classes.Eq Bindings.HDF5.PropertyList.DCPL.ScaleType
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.PropertyList.DCPL.DCPL
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.PropertyList.DCPL.DCPL
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.PropertyList.DCPL.DCPL
instance Bindings.HDF5.PropertyList.OCPL.ObjectCreationPropertyList Bindings.HDF5.PropertyList.DCPL.DCPL
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Classes.Ord Bindings.HDF5.PropertyList.DCPL.ScaleType
instance Bindings.HDF5.PropertyList.PropertyList Bindings.HDF5.PropertyList.DCPL.DCPL
instance Bindings.HDF5.PropertyList.PropertyListOrClass Bindings.HDF5.PropertyList.DCPL.DCPL
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Internal.Read.Read Bindings.HDF5.PropertyList.DCPL.ScaleType
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.DCPL.AllocTime
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.DCPL.FillTime
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.DCPL.FillValueDefaultType
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.DCPL.Layout
instance GHC.Internal.Show.Show Bindings.HDF5.PropertyList.DCPL.ScaleType


-- | Typesafe wrappers around HDF5 functions from the H5G API.
--   
--   Feature coverage is as follows:
--   
--   h5g_get_info [ OK ] h5g_get_objname_by_idx <a>FAIL</a> h5g_get_objinfo
--   <a>FAIL</a> h5g_iterate <a>FAIL</a> h5g_get_info_by_idx [ FAIL ]
--   h5g_link <a>FAIL</a> h5g_unlink <a>FAIL</a> h5g_get_objtype_by_idx
--   <a>FAIL</a> h5g_get_linkval <a>FAIL</a> h5g_create_anon [ OK ]
--   h5g_get_info_by_name [ OK ] h5g_get_num_objs <a>FAIL</a> h5g_close [
--   OK ] h5g_move <a>FAIL</a> h5g_open1 <a>FAIL</a> h5g_open2 [ OK ]
--   h5g_link2 <a>FAIL</a> h5g_set_comment <a>FAIL</a> h5g_get_comment
--   <a>FAIL</a> h5g_get_create_plist [ FAIL ] h5g_move2 <a>FAIL</a>
--   h5g_create2 [ OK ] h5g_create1 <a>FAIL</a>
module Bindings.HDF5.Group
data Group

-- | Create a group given name, location and properties
createGroup :: Location t => t -> ByteString -> Maybe LCPL -> Maybe GCPL -> Maybe GAPL -> IO Group

-- | Create an anonymous group without a name
createAnonymousGroup :: Location t => t -> Maybe GCPL -> Maybe GAPL -> IO Group

-- | Open an existing group
openGroup :: Location t => t -> ByteString -> Maybe GAPL -> IO Group

-- | Close a group
closeGroup :: Group -> IO ()
data GroupStorageType
CompactStorage :: GroupStorageType
DenseStorage :: GroupStorageType
SymbolTableStorage :: GroupStorageType
UnknownStorage :: GroupStorageType
data GroupInfo
GroupInfo :: !GroupStorageType -> !HSize -> !Int64 -> !Bool -> GroupInfo
[groupStorageType] :: GroupInfo -> !GroupStorageType
[groupNLinks] :: GroupInfo -> !HSize
[groupMaxCOrder] :: GroupInfo -> !Int64
[groupMounted] :: GroupInfo -> !Bool
getGroupInfo :: Group -> IO GroupInfo
getGroupInfoByName :: Location loc => loc -> ByteString -> Maybe LAPL -> IO GroupInfo
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Group.GroupStorageType
instance GHC.Internal.Enum.Enum Bindings.HDF5.Group.GroupStorageType
instance GHC.Classes.Eq Bindings.HDF5.Group.Group
instance GHC.Classes.Eq Bindings.HDF5.Group.GroupInfo
instance GHC.Classes.Eq Bindings.HDF5.Group.GroupStorageType
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Group.Group
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Group.Group
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Group.Group
instance Bindings.HDF5.Core.HId.Location Bindings.HDF5.Group.Group
instance Bindings.HDF5.Object.Object Bindings.HDF5.Group.Group
instance GHC.Classes.Ord Bindings.HDF5.Group.GroupInfo
instance GHC.Classes.Ord Bindings.HDF5.Group.GroupStorageType
instance GHC.Internal.Read.Read Bindings.HDF5.Group.GroupInfo
instance GHC.Internal.Read.Read Bindings.HDF5.Group.GroupStorageType
instance GHC.Internal.Show.Show Bindings.HDF5.Group.GroupInfo
instance GHC.Internal.Show.Show Bindings.HDF5.Group.GroupStorageType

module Bindings.HDF5.Link
createHardLink :: (Location src, Location dst) => src -> ByteString -> dst -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
createSoftLink :: Location dst => ByteString -> dst -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
createExternalLink :: Location loc => ByteString -> ByteString -> loc -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
getLinkNameByIdx :: Location loc => loc -> ByteString -> IndexType -> IterOrder -> HSize -> Maybe LAPL -> IO ByteString
doesLinkExist :: Location loc => loc -> ByteString -> Maybe LAPL -> IO Bool
moveLink :: (Location src, Location dst) => src -> ByteString -> dst -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
copyLink :: (Location src, Location dst) => src -> ByteString -> dst -> ByteString -> Maybe LCPL -> Maybe LAPL -> IO ()
deleteLink :: Location t => t -> ByteString -> Maybe LAPL -> IO ()
data LinkType
External :: LinkType
Hard :: LinkType
Soft :: LinkType
OtherLinkType :: !H5L_type_t -> LinkType
data LinkInfo
LinkInfo :: LinkType -> Bool -> Int64 -> CSet -> CSize -> LinkInfo
[linkType] :: LinkInfo -> LinkType
[linkCOrderValid] :: LinkInfo -> Bool
[linkCOrder] :: LinkInfo -> Int64
[linkCSet] :: LinkInfo -> CSet
[linkValSize] :: LinkInfo -> CSize
getLinkInfo :: Location loc => loc -> ByteString -> Maybe LAPL -> IO LinkInfo
getSymLinkVal :: Location loc => loc -> ByteString -> Maybe LAPL -> IO ByteString
iterateLinks :: Location t => t -> IndexType -> IterOrder -> Maybe HSize -> (Group -> ByteString -> LinkInfo -> IO HErr_t) -> IO HSize
iterateLinksByName :: Location t => t -> ByteString -> IndexType -> IterOrder -> Maybe HSize -> Maybe LAPL -> (Group -> ByteString -> LinkInfo -> IO HErr_t) -> IO HSize
visitLinks :: Location t => t -> IndexType -> IterOrder -> (Group -> ByteString -> LinkInfo -> IO HErr_t) -> IO ()
visitLinksByName :: Location t => t -> ByteString -> IndexType -> IterOrder -> Maybe LAPL -> (Group -> ByteString -> LinkInfo -> IO HErr_t) -> IO ()
instance GHC.Classes.Eq Bindings.HDF5.Link.LinkInfo
instance GHC.Classes.Eq Bindings.HDF5.Link.LinkType
instance GHC.Classes.Ord Bindings.HDF5.Link.LinkInfo
instance GHC.Classes.Ord Bindings.HDF5.Link.LinkType
instance GHC.Internal.Read.Read Bindings.HDF5.Link.LinkInfo
instance GHC.Internal.Read.Read Bindings.HDF5.Link.LinkType
instance GHC.Internal.Show.Show Bindings.HDF5.Link.LinkInfo
instance GHC.Internal.Show.Show Bindings.HDF5.Link.LinkType

module Bindings.HDF5.File
data AccFlags
ReadOnly :: AccFlags
ReadWrite :: AccFlags
Truncate :: AccFlags
FailIfExists :: AccFlags
Debug :: AccFlags
Create :: AccFlags
data ObjType
Files :: ObjType
Datasets :: ObjType
Groups :: ObjType
Datatypes :: ObjType
Attrs :: ObjType
All :: ObjType
data Scope
Local :: Scope
Global :: Scope
isHDF5 :: ByteString -> IO Bool
data File
createFile :: ByteString -> [AccFlags] -> Maybe FCPL -> Maybe FAPL -> IO File
openFile :: ByteString -> [AccFlags] -> Maybe FAPL -> IO File
reopenFile :: File -> IO File
flushFile :: File -> Scope -> IO ()
closeFile :: File -> IO ()
mountFile :: Location loc => loc -> ByteString -> File -> Maybe FMPL -> IO ()
unmountFile :: Location loc => loc -> ByteString -> IO ()
getFileSize :: File -> IO HSize
getFileCreatePlist :: File -> IO FCPL
getFileAccessPlist :: File -> IO FAPL
data FileInfo
FileInfo :: !HSize -> !HSize -> !IH_Info -> FileInfo
[superExtSize] :: FileInfo -> !HSize
[sohmHdrSize] :: FileInfo -> !HSize
[sohmMsgsInfo] :: FileInfo -> !IH_Info
getFileInfo :: Object obj => obj -> IO FileInfo
getFileIntent :: File -> IO [AccFlags]
getFileName :: File -> IO ByteString
getFileObjCount :: Maybe File -> Bool -> [ObjType] -> IO CSize
getOpenObjects :: Maybe File -> Bool -> [ObjType] -> IO (Vector ObjectId)
getFileFreespace :: File -> IO HSize
instance GHC.Internal.Enum.Bounded Bindings.HDF5.File.AccFlags
instance GHC.Internal.Enum.Bounded Bindings.HDF5.File.CloseDegree
instance GHC.Internal.Enum.Bounded Bindings.HDF5.File.ObjType
instance GHC.Internal.Enum.Bounded Bindings.HDF5.File.Scope
instance GHC.Internal.Enum.Enum Bindings.HDF5.File.AccFlags
instance GHC.Internal.Enum.Enum Bindings.HDF5.File.CloseDegree
instance GHC.Internal.Enum.Enum Bindings.HDF5.File.ObjType
instance GHC.Internal.Enum.Enum Bindings.HDF5.File.Scope
instance GHC.Classes.Eq Bindings.HDF5.File.AccFlags
instance GHC.Classes.Eq Bindings.HDF5.File.CloseDegree
instance GHC.Classes.Eq Bindings.HDF5.File.File
instance GHC.Classes.Eq Bindings.HDF5.File.FileInfo
instance GHC.Classes.Eq Bindings.HDF5.File.ObjType
instance GHC.Classes.Eq Bindings.HDF5.File.Scope
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.File.File
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.File.File
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.File.File
instance Bindings.HDF5.Core.HId.Location Bindings.HDF5.File.File
instance Bindings.HDF5.Object.Object Bindings.HDF5.File.File
instance GHC.Classes.Ord Bindings.HDF5.File.AccFlags
instance GHC.Classes.Ord Bindings.HDF5.File.CloseDegree
instance GHC.Classes.Ord Bindings.HDF5.File.FileInfo
instance GHC.Classes.Ord Bindings.HDF5.File.ObjType
instance GHC.Classes.Ord Bindings.HDF5.File.Scope
instance GHC.Internal.Read.Read Bindings.HDF5.File.AccFlags
instance GHC.Internal.Read.Read Bindings.HDF5.File.CloseDegree
instance GHC.Internal.Read.Read Bindings.HDF5.File.FileInfo
instance GHC.Internal.Read.Read Bindings.HDF5.File.ObjType
instance GHC.Internal.Read.Read Bindings.HDF5.File.Scope
instance GHC.Internal.Show.Show Bindings.HDF5.File.AccFlags
instance GHC.Internal.Show.Show Bindings.HDF5.File.CloseDegree
instance GHC.Internal.Show.Show Bindings.HDF5.File.FileInfo
instance GHC.Internal.Show.Show Bindings.HDF5.File.ObjType
instance GHC.Internal.Show.Show Bindings.HDF5.File.Scope
instance GHC.Internal.Foreign.Storable.Storable [Bindings.HDF5.File.ObjType]
instance GHC.Internal.Foreign.Storable.Storable [Bindings.HDF5.File.AccFlags]
instance GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Maybe.Maybe Bindings.HDF5.File.CloseDegree)

module Bindings.HDF5.Datatype
data Datatype
data Class
Integer :: Class
Float :: Class
Time :: Class
String :: Class
BitField :: Class
Opaque :: Class
Compound :: Class
Reference :: Class
Enum :: Class
VLen :: Class
Array :: Class
data CSet
ASCII :: CSet
Reserved2 :: CSet
Reserved3 :: CSet
Reserved4 :: CSet
Reserved5 :: CSet
Reserved6 :: CSet
Reserved7 :: CSet
Reserved8 :: CSet
Reserved9 :: CSet
Reserved10 :: CSet
Reserved11 :: CSet
Reserved12 :: CSet
Reserved13 :: CSet
Reserved14 :: CSet
Reserved15 :: CSet
UTF8 :: CSet
data ByteOrder
LE :: ByteOrder
BE :: ByteOrder
VAX :: ByteOrder
Mixed :: ByteOrder
data Normalization
Implied :: Normalization
MSBSet :: Normalization
data Pad
Zero :: Pad
One :: Pad
Background :: Pad
data StringPad
NullTerm :: StringPad
NullPad :: StringPad
SpacePad :: StringPad
StringPad_Reserved3 :: StringPad
StringPad_Reserved4 :: StringPad
StringPad_Reserved5 :: StringPad
StringPad_Reserved6 :: StringPad
StringPad_Reserved7 :: StringPad
StringPad_Reserved8 :: StringPad
StringPad_Reserved9 :: StringPad
StringPad_Reserved10 :: StringPad
StringPad_Reserved11 :: StringPad
StringPad_Reserved12 :: StringPad
StringPad_Reserved13 :: StringPad
StringPad_Reserved14 :: StringPad
StringPad_Reserved15 :: StringPad
class Storable t => NativeType t
nativeTypeId :: NativeType t => Tagged t Datatype
nativeTypeOf :: NativeType t => t -> Datatype
nativeTypeOf1 :: NativeType t => f t -> Datatype
createTypeID :: Class -> CSize -> IO Datatype
copyTypeID :: Datatype -> IO Datatype
closeTypeID :: Datatype -> IO ()
typeIDsEqual :: Datatype -> Datatype -> IO Bool
lockTypeID :: Datatype -> IO ()
commitTypeID :: Location t => t -> ByteString -> Datatype -> Maybe LCPL -> Maybe TCPL -> Maybe TAPL -> IO ()
openTypeID :: Location t => t -> ByteString -> Maybe TAPL -> IO Datatype
commitTypeIDAnonymously :: Location t => t -> Datatype -> Maybe TCPL -> Maybe TAPL -> IO ()
getTypeCreationPList :: Datatype -> IO TCPL
committedTypeID :: Datatype -> IO Bool
encodeTypeID :: Datatype -> IO ByteString
decodeTypeID :: ByteString -> IO Datatype
insertCompoundTypeMember :: Datatype -> ByteString -> CSize -> Datatype -> IO ()
packCompoundType :: Datatype -> IO ()
createVLenType :: Datatype -> IO Datatype
createArrayType :: Datatype -> [HSize] -> IO Datatype
getArrayTypeNDims :: Datatype -> IO CInt
getArrayTypeDims :: Datatype -> IO [HSize]
setOpaqueTypeTag :: Datatype -> ByteString -> IO ()
getOpaqueTypeTag :: Datatype -> IO ByteString
getSuperType :: Datatype -> IO Datatype
getTypeClass :: Datatype -> IO Class
detectTypeClass :: Datatype -> Class -> IO Bool
getTypeSize :: Datatype -> IO CSize
getByteOrder :: Datatype -> IO (Maybe ByteOrder)
getTypePrecision :: Datatype -> IO CSize
getTypeOffset :: Datatype -> IO CInt
getTypePad :: Datatype -> IO (Pad, Pad)
getFloatTypeFields :: Datatype -> IO (CSize, CSize, CSize, CSize, CSize)
getFloatTypeEBias :: Datatype -> IO CSize
getFloatTypeNormalization :: Datatype -> IO (Maybe Normalization)
getFloatTypeInternalPad :: Datatype -> IO Pad
getStringPad :: Datatype -> IO StringPad
getTypeNMembers :: Datatype -> IO CInt
getMemberName :: Datatype -> CUInt -> IO ByteString
getMemberIndex :: Datatype -> ByteString -> IO CInt
setTypeSize :: Datatype -> CSize -> IO ()
setByteOrder :: Datatype -> Maybe ByteOrder -> IO ()
setTypePrecision :: Datatype -> CSize -> IO ()
setTypeOffset :: Datatype -> CSize -> IO ()
setTypePad :: Datatype -> Pad -> Pad -> IO ()
setFloatTypeFields :: Datatype -> CSize -> CSize -> CSize -> CSize -> CSize -> IO ()
setFloatTypeEBias :: Datatype -> CSize -> IO ()

module Bindings.HDF5.Dataspace
data Dataspace
data DataspaceClass
Scalar :: DataspaceClass
Simple :: DataspaceClass
Null :: DataspaceClass
data SelectionOperator
Set :: SelectionOperator
Or :: SelectionOperator
And :: SelectionOperator
Xor :: SelectionOperator
NotB :: SelectionOperator
NotA :: SelectionOperator
Append :: SelectionOperator
Prepend :: SelectionOperator
data SelectionType
Points :: SelectionType
Hyperslabs :: SelectionType
createDataspace :: DataspaceClass -> IO Dataspace
createSimpleDataspace :: [HSize] -> IO Dataspace
createExpandableDataspace :: [(HSize, Maybe HSize)] -> IO Dataspace
copyDataspace :: Dataspace -> IO Dataspace
closeDataspace :: Dataspace -> IO ()
encodeDataspace :: Dataspace -> IO ByteString
decodeDataspace :: ByteString -> IO Dataspace
getSimpleDataspaceExtentNPoints :: Dataspace -> IO HSize
getSimpleDataspaceExtentNDims :: Dataspace -> IO CInt
getSimpleDataspaceExtent :: Dataspace -> IO ([HSize], [Maybe HSize])
isSimpleDataspace :: Dataspace -> IO Bool
getDataspaceSelectionNPoints :: Dataspace -> IO HSize
selectHyperslab :: Dataspace -> SelectionOperator -> [(HSize, Maybe HSize, HSize, Maybe HSize)] -> IO ()
selectElements :: Dataspace -> SelectionOperator -> Vector (Vector HSize) -> IO ()
getSimpleDataspaceExtentType :: Dataspace -> IO DataspaceClass
setDataspaceExtentNone :: Dataspace -> IO ()
copyDataspaceExtent :: Dataspace -> Dataspace -> IO ()
dataspaceExtentsEqual :: Dataspace -> Dataspace -> IO Bool
selectAll :: Dataspace -> IO ()
selectNone :: Dataspace -> IO ()
offsetSimpleDataspaceSelection :: Dataspace -> Vector HSSize -> IO ()
selectionValid :: Dataspace -> IO Bool
getHyperslabSelection :: Dataspace -> IO (Vector (Vector HSize, Vector HSize))
getHyperslabSelectionNBlocks :: Dataspace -> IO HSize
getHyperslabSelectionBlockList :: Dataspace -> HSize -> HSize -> IO (Vector (Vector HSize, Vector HSize))
getElementSelection :: Dataspace -> IO (Vector (Vector HSize))
getElementSelectionNPoints :: Dataspace -> IO HSize
getElementSelectionPointList :: Dataspace -> HSize -> HSize -> IO (Vector (Vector HSize))
getSelectionBounds :: Dataspace -> IO [(HSize, HSize)]
getSelectionType :: Dataspace -> IO (Maybe SelectionType)
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Dataspace.SelectionType
instance GHC.Internal.Enum.Enum Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Internal.Enum.Enum Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Internal.Enum.Enum Bindings.HDF5.Dataspace.SelectionType
instance GHC.Classes.Eq Bindings.HDF5.Dataspace.Dataspace
instance GHC.Classes.Eq Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Classes.Eq Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Classes.Eq Bindings.HDF5.Dataspace.SelectionType
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Dataspace.Dataspace
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Dataspace.Dataspace
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Dataspace.Dataspace
instance Bindings.HDF5.Object.Object Bindings.HDF5.Dataspace.Dataspace
instance GHC.Classes.Ord Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Classes.Ord Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Classes.Ord Bindings.HDF5.Dataspace.SelectionType
instance GHC.Internal.Read.Read Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Internal.Read.Read Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Internal.Read.Read Bindings.HDF5.Dataspace.SelectionType
instance GHC.Internal.Show.Show Bindings.HDF5.Dataspace.DataspaceClass
instance GHC.Internal.Show.Show Bindings.HDF5.Dataspace.SelectionOperator
instance GHC.Internal.Show.Show Bindings.HDF5.Dataspace.SelectionType

module Bindings.HDF5.Dataset
data Dataset
createDataset :: Location loc => loc -> ByteString -> Datatype -> Dataspace -> Maybe LCPL -> Maybe DCPL -> Maybe DAPL -> IO Dataset
createAnonymousDataset :: Location loc => loc -> Datatype -> Dataspace -> Maybe DCPL -> Maybe DAPL -> IO Dataset
openDataset :: Location loc => loc -> ByteString -> Maybe DAPL -> IO Dataset
closeDataset :: Dataset -> IO ()
getDatasetSpace :: Dataset -> IO Dataspace
data SpaceStatus
NotAllocated :: SpaceStatus
Allocated :: SpaceStatus
PartAllocated :: SpaceStatus
getDatasetSpaceStatus :: Dataset -> IO SpaceStatus
getDatasetType :: Dataset -> IO Datatype
getDatasetCreatePList :: Dataset -> IO DCPL
getDatasetAccessPList :: Dataset -> IO DAPL
getDatasetStorageSize :: Dataset -> IO HSize
getDatasetOffset :: Dataset -> IO HAddr
readDataset :: NativeType t => Dataset -> Maybe Dataspace -> Maybe DXPL -> IO (Vector t)
readDatasetInto :: NativeType t => Dataset -> Maybe Dataspace -> Maybe Dataspace -> Maybe DXPL -> MVector RealWorld t -> IO ()
writeDataset :: NativeType t => Dataset -> Maybe Dataspace -> Maybe Dataspace -> Maybe DXPL -> Vector t -> IO ()
setDatasetExtent :: Dataset -> [HSize] -> IO ()
fillSelection :: (NativeType a, NativeType b) => a -> MVector RealWorld b -> Dataspace -> IO ()
instance GHC.Internal.Enum.Bounded Bindings.HDF5.Dataset.SpaceStatus
instance GHC.Internal.Enum.Enum Bindings.HDF5.Dataset.SpaceStatus
instance GHC.Classes.Eq Bindings.HDF5.Dataset.Dataset
instance GHC.Classes.Eq Bindings.HDF5.Dataset.SpaceStatus
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Dataset.Dataset
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Dataset.Dataset
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Dataset.Dataset
instance Bindings.HDF5.Object.Object Bindings.HDF5.Dataset.Dataset
instance GHC.Classes.Ord Bindings.HDF5.Dataset.SpaceStatus
instance GHC.Internal.Read.Read Bindings.HDF5.Dataset.SpaceStatus
instance GHC.Internal.Show.Show Bindings.HDF5.Dataset.SpaceStatus


-- | Typesafe wrappers around HDF5 functions from the H5A API.
--   
--   Feature coverage is as follows:
--   
--   h5a_open h5a_close h5a_read
module Bindings.HDF5.Attribute
data Attribute

-- | Open an existing attribute
openAttribute :: ObjectId -> ByteString -> IO Attribute
getAttributeType :: Attribute -> IO Datatype
getAttributeInfo :: Attribute -> IO AttributeInfo
getAttributeSpace :: Attribute -> IO Dataspace

-- | Read in data from an attribute
--   
--   Parameters:
--   
--   <ul>
--   <li><i><tt> attr_id :: HId_t </tt></i> Attribute to read</li>
--   <li><i><tt> dtype_id :: HId_t </tt></i> Memory datatype of buffer</li>
--   <li><i><tt> buf :: OutArray a </tt></i> Buffer for data to read</li>
--   </ul>
--   
--   Returns non-negative on success / negative on failure
--   
--   This function reads a complete attribute from disk.
--   
--   <pre>
--   herr_t  H5Aread(hid_t attr_id, hid_t type_id, void *buf);
--   </pre>
readAttribute :: NativeType t => Attribute -> IO (Vector t)

-- | for now this method read only Bytestring this part is a bit fragile...
--   | we should check thaht the attr type is compatible with the string
--   type. | TODO fnd a better way to deal with all kind of attribute
--   type...
readAttributeStringASCII :: Attribute -> IO ByteString
doesAttributeExist :: ObjectId -> ByteString -> IO Bool

-- | Close an Attribute
closeAttribute :: Attribute -> IO ()
iterateAttributes :: ObjectId -> IndexType -> IterOrder -> Maybe HSize -> (Group -> ByteString -> AttributeInfo -> IO HErr_t) -> IO HSize
iterateAttributesByName :: ObjectId -> ByteString -> IndexType -> IterOrder -> Maybe HSize -> Maybe LAPL -> (Group -> ByteString -> AttributeInfo -> IO HErr_t) -> IO HSize
instance GHC.Classes.Eq Bindings.HDF5.Attribute.Attribute
instance GHC.Classes.Eq Bindings.HDF5.Attribute.AttributeInfo
instance Bindings.HDF5.Core.HId.FromHId Bindings.HDF5.Attribute.Attribute
instance Bindings.HDF5.Core.HDFResultType.HDFResultType Bindings.HDF5.Attribute.Attribute
instance Bindings.HDF5.Core.HId.HId Bindings.HDF5.Attribute.Attribute
instance GHC.Classes.Ord Bindings.HDF5.Attribute.AttributeInfo
instance GHC.Internal.Read.Read Bindings.HDF5.Attribute.AttributeInfo
instance GHC.Internal.Show.Show Bindings.HDF5.Attribute.AttributeInfo

module Bindings.HDF5
data IndexType
ByName :: IndexType
ByCreationOrder :: IndexType
data IterOrder
Increasing :: IterOrder
Decreasing :: IterOrder
Native :: IterOrder
data IH_Info
IH_Info :: !HSize -> !HSize -> IH_Info
[indexSize] :: IH_Info -> !HSize
[heapSize] :: IH_Info -> !HSize
