{-# LANGUAGE BangPatterns #-} module HaskellWorks.Data.Json.Standard.Cursor.Load.Cursor ( loadCursor , loadCursorWithIndex , loadCursorWithCsPoppyIndex , loadCursorWithCsPoppyIndex2 ) where import Data.Word import HaskellWorks.Data.BalancedParens.Simple import HaskellWorks.Data.Json.Standard.Cursor.Generic import HaskellWorks.Data.Json.Standard.Cursor.Load.Raw import HaskellWorks.Data.RankSelect.CsPoppy1 import qualified Data.ByteString.Internal as BSI import qualified Data.Vector.Storable as DVS import qualified HaskellWorks.Data.ByteString as BS import qualified HaskellWorks.Data.Json.Standard.Cursor.Fast as FAST loadCursor :: String -> IO FAST.Cursor loadCursor :: String -> IO Cursor loadCursor String path = do ByteString bs <- String -> IO ByteString BS.mmap String path let !cursor :: Cursor cursor = ByteString -> Cursor FAST.fromByteStringViaBlanking ByteString bs Cursor -> IO Cursor forall (m :: * -> *) a. Monad m => a -> m a return Cursor cursor loadCursorWithIndex :: String -> IO (GenericCursor BSI.ByteString (DVS.Vector Word64) (SimpleBalancedParens (DVS.Vector Word64))) loadCursorWithIndex :: String -> IO (GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64))) loadCursorWithIndex String filename = do (ByteString jsonBS, Vector Word64 jsonIb, Vector Word64 jsonBp) <- String -> IO (ByteString, Vector Word64, Vector Word64) loadRawWithIndex String filename let cursor :: GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64)) cursor = ByteString -> Vector Word64 -> SimpleBalancedParens (Vector Word64) -> Word64 -> GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64)) forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS Vector Word64 jsonIb (Vector Word64 -> SimpleBalancedParens (Vector Word64) forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64)) -> IO (GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64))) forall (m :: * -> *) a. Monad m => a -> m a return GenericCursor ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64)) cursor loadCursorWithCsPoppyIndex :: String -> IO (GenericCursor BSI.ByteString CsPoppy1 (SimpleBalancedParens (DVS.Vector Word64))) loadCursorWithCsPoppyIndex :: String -> IO (GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64))) loadCursorWithCsPoppyIndex String filename = do (ByteString jsonBS, Vector Word64 jsonIb, Vector Word64 jsonBp) <- String -> IO (ByteString, Vector Word64, Vector Word64) loadRawWithIndex String filename let cursor :: GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64)) cursor = ByteString -> CsPoppy1 -> SimpleBalancedParens (Vector Word64) -> Word64 -> GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64)) forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (Vector Word64 -> CsPoppy1 makeCsPoppy Vector Word64 jsonIb) (Vector Word64 -> SimpleBalancedParens (Vector Word64) forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64)) -> IO (GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64))) forall (m :: * -> *) a. Monad m => a -> m a return GenericCursor ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64)) cursor loadCursorWithCsPoppyIndex2 :: String -> IO (GenericCursor BSI.ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1)) loadCursorWithCsPoppyIndex2 :: String -> IO (GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1)) loadCursorWithCsPoppyIndex2 String filename = do (ByteString jsonBS, Vector Word64 jsonIb, Vector Word64 jsonBp) <- String -> IO (ByteString, Vector Word64, Vector Word64) loadRawWithIndex String filename let cursor :: GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1) cursor = ByteString -> CsPoppy1 -> SimpleBalancedParens CsPoppy1 -> Word64 -> GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1) forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (Vector Word64 -> CsPoppy1 makeCsPoppy Vector Word64 jsonIb) (CsPoppy1 -> SimpleBalancedParens CsPoppy1 forall a. a -> SimpleBalancedParens a SimpleBalancedParens (Vector Word64 -> CsPoppy1 makeCsPoppy Vector Word64 jsonBp)) Word64 1 :: GenericCursor BSI.ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1) GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1) -> IO (GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1)) forall (m :: * -> *) a. Monad m => a -> m a return GenericCursor ByteString CsPoppy1 (SimpleBalancedParens CsPoppy1) cursor