module HaskellWorks.Data.Json.Standard.Cursor.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 :: String -> IO (ByteString, Vector Word64, Vector Word64) loadRawWithIndex String filename = do (ForeignPtr Word8, Int, Int) jsonFr <- String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr Word8, Int, Int) forall a. String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr a, Int, Int) mmapFileForeignPtr String filename Mode ReadOnly Maybe (Int64, Int) forall a. Maybe a Nothing (ForeignPtr Word8, Int, Int) jsonIbFr <- String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr Word8, Int, Int) forall a. String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr a, Int, Int) mmapFileForeignPtr (String filename String -> String -> String forall a. [a] -> [a] -> [a] ++ String ".ib.idx") Mode ReadOnly Maybe (Int64, Int) forall a. Maybe a Nothing (ForeignPtr Word8, Int, Int) jsonBpFr <- String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr Word8, Int, Int) forall a. String -> Mode -> Maybe (Int64, Int) -> IO (ForeignPtr a, Int, Int) mmapFileForeignPtr (String filename String -> String -> String forall a. [a] -> [a] -> [a] ++ String ".bp.idx") Mode ReadOnly Maybe (Int64, Int) forall a. Maybe a Nothing let jsonBS :: ByteString jsonBS = (ForeignPtr Word8, Int, Int) -> ByteString forall a. FromForeignRegion a => (ForeignPtr Word8, Int, Int) -> a fromForeignRegion (ForeignPtr Word8, Int, Int) jsonFr :: BS.ByteString let jsonIb :: Vector Word64 jsonIb = (ForeignPtr Word8, Int, Int) -> Vector Word64 forall a. FromForeignRegion a => (ForeignPtr Word8, Int, Int) -> a fromForeignRegion (ForeignPtr Word8, Int, Int) jsonIbFr :: DVS.Vector Word64 let jsonBp :: Vector Word64 jsonBp = (ForeignPtr Word8, Int, Int) -> Vector Word64 forall a. FromForeignRegion a => (ForeignPtr Word8, Int, Int) -> a fromForeignRegion (ForeignPtr Word8, Int, Int) jsonBpFr :: DVS.Vector Word64 (ByteString, Vector Word64, Vector Word64) -> IO (ByteString, Vector Word64, Vector Word64) forall (m :: * -> *) a. Monad m => a -> m a return (ByteString jsonBS, Vector Word64 jsonIb, Vector Word64 jsonBp)