hw-json-1.0.0.1: src/HaskellWorks/Data/Json/Backend/Standard/Load/Raw.hs
module HaskellWorks.Data.Json.Backend.Standard.Load.Raw
( loadRawWithIndex
) where
import Data.Word
import HaskellWorks.Data.FromForeignRegion
import System.IO.MMap
import qualified Data.ByteString as BS
import qualified Data.Vector.Storable as DVS
loadRawWithIndex :: String -> IO (BS.ByteString, DVS.Vector Word64, DVS.Vector Word64)
loadRawWithIndex filename = do
jsonFr <- mmapFileForeignPtr filename ReadOnly Nothing
jsonIbFr <- mmapFileForeignPtr (filename ++ ".ib.idx") ReadOnly Nothing
jsonBpFr <- mmapFileForeignPtr (filename ++ ".bp.idx") ReadOnly Nothing
let jsonBS = fromForeignRegion jsonFr :: BS.ByteString
let jsonIb = fromForeignRegion jsonIbFr :: DVS.Vector Word64
let jsonBp = fromForeignRegion jsonBpFr :: DVS.Vector Word64
return (jsonBS, jsonIb, jsonBp)