-----------------------------------------------------------------------------
-- |
-- Module      :  Halfs.BuiltInFiles
-- 
-- Maintainer  :  Isaac Jones <ijones@galois.com>
-- Stability   :  alpha
-- Portability :  GHC
--
-- Several files are built-in and this module represents reading them.

module Halfs.BuiltInFiles (readInodeMapFile
                          ,readBlockMapFile
                          ) where
import Halfs.BasicIO (readInodeMapBin, readBlockMapBin)
import Halfs.Inode(Inode)
import Halfs.FSState (FSRead)
import Halfs.TheInodeMap (TheInodeMap(..))
import Halfs.TheBlockMap(TheBlockMap(..))
import Halfs.FileHandle (readFileFromInode)



-- |Reads it as a file.
readInodeMapFile :: Inode
                 -> FSRead TheInodeMap
readInodeMapFile inode
    = readFileFromInode readInodeMapBin inode

-- |Reads it as a file.
readBlockMapFile :: Inode
                 -> FSRead TheBlockMap
readBlockMapFile bmInode'
    = readFileFromInode readBlockMapBin bmInode'

{- Might be useful sometime:
readFileFromHandle :: (BinHandle -> FSRead a) -> FileHandle -> FSRead a
readFileFromHandle f (FileHandle{fhInode=i}) = readFileFromInode f i

-- |For assertion checking
justSame :: (Eq a) => a -> (b, a) -> Bool
justSame r (_, numRead) = r == numRead

-}