{-# LANGUAGE PatternSynonyms #-}

module Raehik.Compat.FlatParse.Basic.Remaining where

import FlatParse.Basic.Parser ( ParserT(ParserT), pattern OK# )
import GHC.Exts ( minusAddr#, Int(I#) )

-- | Get the remaining length. May return 0.
remaining :: ParserT st e Int
remaining :: forall (st :: ZeroBitType) e. ParserT st e Int
remaining = (ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e Int)
-> ParserT st e Int
forall (st :: ZeroBitType) e a.
(ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e a)
-> ParserT st e a
ParserT ((ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e Int)
 -> ParserT st e Int)
-> (ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e Int)
-> ParserT st e Int
forall a b. (a -> b) -> a -> b
$ \ForeignPtrContents
_fp Addr#
eob Addr#
s st
st -> st -> Int -> Addr# -> Res# st e Int
forall (st :: ZeroBitType) a e. st -> a -> Addr# -> Res# st e a
OK# st
st (Int# -> Int
I# (Addr# -> Addr# -> Int#
minusAddr# Addr#
eob Addr#
s)) Addr#
s
{-# inline remaining #-}