{-# LANGUAGE OverloadedStrings #-}

{-# OPTIONS_GHC -fno-warn-unused-matches     #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing     #-}
{-# OPTIONS_GHC -fno-warn-unused-local-binds #-}

module Example3 where

import Control.Monad

import qualified Data.ByteString                             as BS
import qualified HaskellWorks.Data.Json.Standard.Cursor.Fast as JCF
import qualified HaskellWorks.Data.TreeCursor                as TC

example :: IO ()
example :: IO ()
example = do
  let fc :: Cursor -> Maybe Cursor
fc = Cursor -> Maybe Cursor
forall k. TreeCursor k => k -> Maybe k
TC.firstChild
  let ns :: Cursor -> Maybe Cursor
ns = Cursor -> Maybe Cursor
forall k. TreeCursor k => k -> Maybe k
TC.nextSibling
  let jsonBs :: ByteString
jsonBs  = ByteString
"[null, {\"field\": 1}]" :: BS.ByteString
  let ibip :: IbBp
ibip    = ByteString -> IbBp
JCF.simdToIbBp ByteString
jsonBs
  let cursor :: Cursor
cursor  = ByteString -> IbBp -> Cursor
JCF.fromBsIbBp ByteString
jsonBs IbBp
ibip
  let Maybe Cursor
_ = Cursor -> Maybe Cursor
fc Cursor
cursor
  let Maybe Cursor
_ = (Cursor -> Maybe Cursor
fc (Cursor -> Maybe Cursor)
-> (Cursor -> Maybe Cursor) -> Cursor -> Maybe Cursor
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Cursor -> Maybe Cursor
ns) Cursor
cursor
  () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()