{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Json.Standard.Load.Partial ( loadPartial , loadPartialWithCsPoppyIndex , loadPartialWithIndex ) where import HaskellWorks.Data.BalancedParens.Simple import HaskellWorks.Data.Bits.BitShown import HaskellWorks.Data.Json.Internal.PartialIndex import HaskellWorks.Data.Json.PartialValue import HaskellWorks.Data.Json.Standard.Cursor.Generic import HaskellWorks.Data.Json.Standard.Cursor.Load.Raw import HaskellWorks.Data.RankSelect.CsPoppy loadPartialWithIndex :: String -> IO JsonPartialValue loadPartialWithIndex :: String -> IO JsonPartialValue loadPartialWithIndex 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 (BitShown (Vector Word64)) (SimpleBalancedParens (Vector Word64)) cursor = ByteString -> BitShown (Vector Word64) -> SimpleBalancedParens (Vector Word64) -> Word64 -> GenericCursor ByteString (BitShown (Vector Word64)) (SimpleBalancedParens (Vector Word64)) forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (Vector Word64 -> BitShown (Vector Word64) forall a. a -> BitShown a BitShown Vector Word64 jsonIb) (Vector Word64 -> SimpleBalancedParens (Vector Word64) forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 let !jsonResult :: JsonPartialValue jsonResult = JsonPartialIndex -> JsonPartialValue forall a. JsonPartialValueAt a => a -> JsonPartialValue jsonPartialJsonValueAt (GenericCursor ByteString (BitShown (Vector Word64)) (SimpleBalancedParens (Vector Word64)) -> JsonPartialIndex forall a. JsonPartialIndexAt a => a -> JsonPartialIndex jsonPartialIndexAt GenericCursor ByteString (BitShown (Vector Word64)) (SimpleBalancedParens (Vector Word64)) cursor) JsonPartialValue -> IO JsonPartialValue forall (m :: * -> *) a. Monad m => a -> m a return JsonPartialValue jsonResult loadPartialWithCsPoppyIndex :: String -> IO JsonPartialValue loadPartialWithCsPoppyIndex :: String -> IO JsonPartialValue loadPartialWithCsPoppyIndex 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 CsPoppy (SimpleBalancedParens (Vector Word64)) cursor = ByteString -> CsPoppy -> SimpleBalancedParens (Vector Word64) -> Word64 -> GenericCursor ByteString CsPoppy (SimpleBalancedParens (Vector Word64)) forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (Vector Word64 -> CsPoppy makeCsPoppy Vector Word64 jsonIb) (Vector Word64 -> SimpleBalancedParens (Vector Word64) forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 let !jsonResult :: JsonPartialValue jsonResult = JsonPartialIndex -> JsonPartialValue forall a. JsonPartialValueAt a => a -> JsonPartialValue jsonPartialJsonValueAt (GenericCursor ByteString CsPoppy (SimpleBalancedParens (Vector Word64)) -> JsonPartialIndex forall a. JsonPartialIndexAt a => a -> JsonPartialIndex jsonPartialIndexAt GenericCursor ByteString CsPoppy (SimpleBalancedParens (Vector Word64)) cursor) JsonPartialValue -> IO JsonPartialValue forall (m :: * -> *) a. Monad m => a -> m a return JsonPartialValue jsonResult loadPartial :: String -> IO JsonPartialValue loadPartial :: String -> IO JsonPartialValue loadPartial = String -> IO JsonPartialValue loadPartialWithCsPoppyIndex