hdf5-1.8.9: src/Bindings/HDF5/PropertyList/GCPL.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Bindings.HDF5.PropertyList.GCPL
( module Bindings.HDF5.PropertyList.OCPL
, GCPL
, GroupCreationPropertyList
, setLocalHeapSizeHint
, getLocalHeapSizeHint
, setLinkPhaseChange
, getLinkPhaseChange
, getEstLinkInfo
, setEstLinkInfo
, CreationOrder(..)
, setLinkCreationOrder
, getLinkCreationOrder
) where
import Bindings.HDF5.Core
import Bindings.HDF5.Error
import Bindings.HDF5.PropertyList.OCPL
import Bindings.HDF5.Raw.H5P
import Foreign.C.Types
import Foreign.Ptr.Conventions
newtype GCPL = GCPL OCPL
deriving (Eq, HId, FromHId, HDFResultType, PropertyListOrClass, ObjectCreationPropertyList)
instance PropertyList GCPL where
staticPlistClass = Tagged groupCreate
class ObjectCreationPropertyList t => GroupCreationPropertyList t where
instance GroupCreationPropertyList GCPL
setLocalHeapSizeHint :: GroupCreationPropertyList gcpl => gcpl -> CSize -> IO ()
setLocalHeapSizeHint gcpl sz =
withErrorCheck_ $
h5p_set_local_heap_size_hint (hid gcpl) sz
getLocalHeapSizeHint :: GroupCreationPropertyList gcpl => gcpl -> IO CSize
getLocalHeapSizeHint gcpl =
withOut_ $ \sz ->
withErrorCheck_ $
h5p_get_local_heap_size_hint (hid gcpl) sz
setLinkPhaseChange :: GroupCreationPropertyList gcpl => gcpl -> CUInt -> CUInt -> IO ()
setLinkPhaseChange gcpl maxCompact minDense =
withErrorCheck_ $
h5p_set_link_phase_change (hid gcpl) maxCompact minDense
getLinkPhaseChange :: GroupCreationPropertyList gcpl => gcpl -> IO (CUInt, CUInt)
getLinkPhaseChange gcpl =
withOut $ \maxCompact ->
withOut_ $ \minDense ->
withErrorCheck_ $
h5p_get_link_phase_change (hid gcpl) maxCompact minDense
setEstLinkInfo :: GroupCreationPropertyList gcpl => gcpl -> CUInt -> CUInt -> IO ()
setEstLinkInfo gcpl estNumEntries estNameLen =
withErrorCheck_ $
h5p_set_est_link_info (hid gcpl) estNumEntries estNameLen
getEstLinkInfo :: GroupCreationPropertyList gcpl => gcpl -> IO (CUInt, CUInt)
getEstLinkInfo gcpl =
withOut $ \estNumEntries ->
withOut_ $ \estNameLen ->
withErrorCheck_ $
h5p_get_est_link_info (hid gcpl) estNumEntries estNameLen
data CreationOrder
= Tracked
| Indexed
deriving (Eq, Ord, Bounded, Enum, Read, Show)
creationOrderCode :: Num a => CreationOrder -> a
creationOrderCode Tracked = h5p_CRT_ORDER_TRACKED
creationOrderCode Indexed = h5p_CRT_ORDER_INDEXED
creationOrder :: (Eq a, Num a, Show a) => a -> CreationOrder
creationOrder c
| c == h5p_CRT_ORDER_TRACKED = Tracked
| c == h5p_CRT_ORDER_INDEXED = Indexed
| otherwise = error ("Unknown CreationOrder code: " ++ show c)
setLinkCreationOrder :: GroupCreationPropertyList gcpl => gcpl -> CreationOrder -> IO ()
setLinkCreationOrder gcpl crtOrderFlags =
withErrorCheck_ $
h5p_set_link_creation_order (hid gcpl) (creationOrderCode crtOrderFlags)
getLinkCreationOrder :: GroupCreationPropertyList gcpl => gcpl -> IO CreationOrder
getLinkCreationOrder gcpl =
fmap creationOrder $
withOut_ $ \crtOrderFlags ->
withErrorCheck_ $
h5p_get_link_creation_order (hid gcpl) crtOrderFlags