{-# 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 = forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (forall a. a -> BitShown a BitShown Vector Word64 jsonIb) (forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 let !jsonResult :: JsonPartialValue jsonResult = forall a. JsonPartialValueAt a => a -> JsonPartialValue jsonPartialJsonValueAt (forall a. JsonPartialIndexAt a => a -> JsonPartialIndex jsonPartialIndexAt GenericCursor ByteString (BitShown (Vector Word64)) (SimpleBalancedParens (Vector Word64)) cursor) 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 = forall t v w. t -> v -> w -> Word64 -> GenericCursor t v w GenericCursor ByteString jsonBS (Vector Word64 -> CsPoppy makeCsPoppy Vector Word64 jsonIb) (forall a. a -> SimpleBalancedParens a SimpleBalancedParens Vector Word64 jsonBp) Word64 1 let !jsonResult :: JsonPartialValue jsonResult = forall a. JsonPartialValueAt a => a -> JsonPartialValue jsonPartialJsonValueAt (forall a. JsonPartialIndexAt a => a -> JsonPartialIndex jsonPartialIndexAt GenericCursor ByteString CsPoppy (SimpleBalancedParens (Vector Word64)) cursor) forall (m :: * -> *) a. Monad m => a -> m a return JsonPartialValue jsonResult loadPartial :: String -> IO JsonPartialValue loadPartial :: String -> IO JsonPartialValue loadPartial = String -> IO JsonPartialValue loadPartialWithCsPoppyIndex