{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeSynonymInstances #-} module HaskellWorks.Data.Json.Simple.Cursor.Fast ( fromByteString , fromForeignRegion , fromString ) where import Foreign.ForeignPtr import HaskellWorks.Data.Json.Simple.Cursor import HaskellWorks.Data.RankSelect.CsPoppy import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Internal as BSI import qualified HaskellWorks.Data.BalancedParens.RangeMin as RM import qualified HaskellWorks.Data.FromForeignRegion as F import qualified HaskellWorks.Data.Json.Simple.Cursor.Internal.IbBp as J import qualified HaskellWorks.Data.Json.Simple.Cursor.Internal.ToIbBp as J fromByteString :: BS.ByteString -> JsonCursor BS.ByteString CsPoppy (RM.RangeMin CsPoppy) fromByteString :: ByteString -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) fromByteString ByteString bs = JsonCursor :: forall t v w. t -> v -> w -> Count -> JsonCursor t v w JsonCursor { cursorText :: ByteString cursorText = ByteString bs , interests :: CsPoppy interests = Vector Count -> CsPoppy makeCsPoppy Vector Count ib , balancedParens :: RangeMin CsPoppy balancedParens = CsPoppy -> RangeMin CsPoppy forall a. AsVector64 a => a -> RangeMin a RM.mkRangeMin (Vector Count -> CsPoppy makeCsPoppy Vector Count bp) , cursorRank :: Count cursorRank = Count 1 } where J.IbBp Vector Count ib Vector Count bp = ByteString -> IbBp forall a. ToIbBp a => a -> IbBp J.toIbBp ByteString bs fromForeignRegion :: F.ForeignRegion -> JsonCursor BS.ByteString CsPoppy (RM.RangeMin CsPoppy) fromForeignRegion :: ForeignRegion -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) fromForeignRegion (ForeignPtr Word8 fptr, Int offset, Int size) = ByteString -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) fromByteString (ForeignPtr Word8 -> Int -> Int -> ByteString BSI.fromForeignPtr (ForeignPtr Word8 -> ForeignPtr Word8 forall a b. ForeignPtr a -> ForeignPtr b castForeignPtr ForeignPtr Word8 fptr) Int offset Int size) fromString :: String -> JsonCursor BS.ByteString CsPoppy (RM.RangeMin CsPoppy) fromString :: String -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) fromString = ByteString -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) fromByteString (ByteString -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy)) -> (String -> ByteString) -> String -> JsonCursor ByteString CsPoppy (RangeMin CsPoppy) forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString BSC.pack