packages feed

hdf5-lite-0.1.1.0: src/Data/HDF5/Store.hs

module Data.HDF5.Store where

import qualified Data.Vector.Storable as VS
import Foreign.C.Types (CInt, CChar, CDouble, CFloat, CSize)
import Foreign.Storable

import Data.HDF5.Internal.Types (Herr, Hid, Hsize, H5T_class_t)

class Storable a => StorableDataset a where
  -- | Allocate and write a dataset
  makeDataset :: Hid  -- ^ Identifier
    -> String    -- ^ Dataset name
    -> [Hsize]   -- ^ Dimensions
    -> VS.Vector a -- ^ Dataset contents
    -> IO ()
  -- | Read a dataset
  readDataset :: Hid -- ^ Identifier
    -> String        -- ^ Dataset name
    -> IO (VS.Vector a)




data Dataset a = DS {
    dsSize :: [Hsize]
  , dsData :: VS.Vector a
                    } deriving (Eq, Show)

class Storable a => StorableDS a where
  makeDS :: Hid -> String -> Dataset a -> IO ()
  readDS :: Hid -> String -> IO (Dataset a)





-- from https://github.com/ian-ross/hnetcdf/blob/master/Data/NetCDF/Store.hs

-- -- | Class representing containers suitable for storing values read
-- -- from NetCDF variables.  Just has methods to convert back and forth
-- -- between the store and a foreign pointer, and to perform simple
-- -- mapping over the store.  The NcStoreExtraCon associated
-- -- constraint-kinded type is used to track extra class constraints on
-- -- elements needed for some store types.
-- class NcStore s where
--   type NcStoreExtraCon s a :: Constraint
--   type NcStoreExtraCon s a = ()
--   toForeignPtr :: (Storable e, NcStoreExtraCon s e) =>
--                   s e -> ForeignPtr e
--   fromForeignPtr :: (Storable e, NcStoreExtraCon s e) =>
--                     ForeignPtr e -> [Int] -> s e
--   smap :: (Storable a, Storable b, NcStoreExtraCon s a, NcStoreExtraCon s b) =>
-- (a -> b) -> s a -> s b