hw-json-1.0.0.0: src/HaskellWorks/Data/Json/Backend/Standard/Load/Partial.hs
{-# 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