hdf5-1.8.9: src/Bindings/HDF5/PropertyList/LAPL.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Bindings.HDF5.PropertyList.LAPL
( module Bindings.HDF5.PropertyList
, LAPL
, LinkAccessPropertyList
, setNLinks
, getNLinks
, setELinkPrefix
, getELinkPrefix
, setELinkFAPL
, getELinkFAPL
, setELinkAccFlags
, getELinkAccFlags
) where
import Bindings.HDF5.Raw.H5P
import Bindings.HDF5.Core
import Bindings.HDF5.Error
import Bindings.HDF5.PropertyList
import Bindings.HDF5.PropertyList.FAPL
import qualified Data.ByteString as BS
import Foreign.Ptr.Conventions
import Foreign.C.Types
class PropertyList t => LinkAccessPropertyList t where
newtype LAPL = LAPL PropertyListID
deriving (Eq, HId, FromHId, HDFResultType, PropertyListOrClass)
instance PropertyList LAPL where
staticPlistClass = Tagged linkAccess
instance LinkAccessPropertyList LAPL
setNLinks :: LinkAccessPropertyList lapl => lapl -> CSize -> IO ()
setNLinks lapl nLinks =
withErrorCheck_ $
h5p_set_nlinks (hid lapl) nLinks
getNLinks :: LinkAccessPropertyList lapl => lapl -> IO CSize
getNLinks lapl =
withOut_ $ \nLinks ->
withErrorCheck_ $
h5p_get_nlinks (hid lapl) nLinks
setELinkPrefix :: LinkAccessPropertyList lapl => lapl -> BS.ByteString -> IO ()
setELinkPrefix lapl prefix =
withErrorCheck_ $
BS.useAsCString prefix $ \cprefix ->
h5p_set_elink_prefix (hid lapl) cprefix
getELinkPrefix :: LinkAccessPropertyList lapl => lapl -> IO BS.ByteString
getELinkPrefix lapl =
withOutByteString $ \buf bufSz ->
withErrorWhen (< 0) $
h5p_get_elink_prefix (hid lapl) buf bufSz
getELinkFAPL :: LinkAccessPropertyList lapl => lapl -> IO FAPL
getELinkFAPL lapl =
fmap uncheckedFromHId $
withErrorCheck $
h5p_get_elink_fapl (hid lapl)
setELinkFAPL :: LinkAccessPropertyList lapl => lapl -> FAPL -> IO ()
setELinkFAPL lapl fapl =
withErrorCheck_ $
h5p_set_elink_fapl (hid lapl) (hid fapl)
-- TODO: an enumeration type for these flags
setELinkAccFlags :: LinkAccessPropertyList lapl => lapl -> CUInt -> IO ()
setELinkAccFlags lapl flags =
withErrorCheck_ $
h5p_set_elink_acc_flags (hid lapl) flags
getELinkAccFlags :: LinkAccessPropertyList lapl => lapl -> IO CUInt
getELinkAccFlags lapl =
withOut_ $ \flags ->
withErrorCheck_ $
h5p_get_elink_acc_flags (hid lapl) flags
-- type ELinkTraverse = BS.ByteString -> BS.ByteString -> BS.ByteString -> BS.ByteString -> Ptr CUInt -> FAPL -> IO ()
-- h5p_set_elink_cb :: HId_t -> H5L_elink_traverse_t a -> Ptr a -> IO HErr_t
-- h5p_get_elink_cb :: HId_t -> Out (H5L_elink_traverse_t a) -> Out (Ptr a) -> IO HErr_t