{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Json.Backend.Standard.Load.Partial ( loadPartial , loadPartialWithCsPoppyIndex , loadPartialWithIndex , loadPartialWithPoppy512Index , loadPartialWithPoppy512Index2 ) where import HaskellWorks.Data.BalancedParens.Simple import HaskellWorks.Data.Bits.BitShown import HaskellWorks.Data.Json.Backend.Standard.Cursor import HaskellWorks.Data.Json.Backend.Standard.Load.Raw import HaskellWorks.Data.Json.Internal.PartialIndex import HaskellWorks.Data.Json.PartialValue import HaskellWorks.Data.RankSelect.CsPoppy import HaskellWorks.Data.RankSelect.Poppy512 import qualified Data.ByteString.Internal as BSI loadPartialWithIndex :: String -> IO JsonPartialValue loadPartialWithIndex filename = do (jsonBS, jsonIb, jsonBp) <- loadRawWithIndex filename let cursor = JsonCursor jsonBS (BitShown jsonIb) (SimpleBalancedParens jsonBp) 1 let !jsonResult = jsonPartialJsonValueAt (jsonPartialIndexAt cursor) return jsonResult loadPartialWithPoppy512Index :: String -> IO JsonPartialValue loadPartialWithPoppy512Index filename = do (jsonBS, jsonIb, jsonBp) <- loadRawWithIndex filename let cursor = JsonCursor jsonBS (makePoppy512 jsonIb) (SimpleBalancedParens jsonBp) 1 let !jsonResult = jsonPartialJsonValueAt (jsonPartialIndexAt cursor) return jsonResult loadPartialWithCsPoppyIndex :: String -> IO JsonPartialValue loadPartialWithCsPoppyIndex filename = do (jsonBS, jsonIb, jsonBp) <- loadRawWithIndex filename let cursor = JsonCursor jsonBS (makeCsPoppy jsonIb) (SimpleBalancedParens jsonBp) 1 let !jsonResult = jsonPartialJsonValueAt (jsonPartialIndexAt cursor) return jsonResult loadPartialWithPoppy512Index2 :: String -> IO JsonPartialValue loadPartialWithPoppy512Index2 filename = do (jsonBS, jsonIb, jsonBp) <- loadRawWithIndex filename let cursor = JsonCursor jsonBS (makePoppy512 jsonIb) (SimpleBalancedParens (makePoppy512 jsonBp)) 1 :: JsonCursor BSI.ByteString Poppy512 (SimpleBalancedParens Poppy512) let !jsonResult = jsonPartialJsonValueAt (jsonPartialIndexAt cursor) return jsonResult loadPartial :: String -> IO JsonPartialValue loadPartial = loadPartialWithCsPoppyIndex