module Raehik.Compat.FlatParse.Basic.Prim where

import Raehik.Compat.Data.Primitive.Types
import FlatParse.Basic
import GHC.Exts ( plusAddr# )

anyPrim :: forall a e st. Prim' a => ParserT st e a
anyPrim :: forall a e (st :: ZeroBitType). Prim' a => ParserT st e a
anyPrim = Int# -> ParserT st e a -> ParserT st e a
forall (st :: ZeroBitType) e r.
Int# -> ParserT st e r -> ParserT st e r
withEnsure# Int#
size# (ParserT st e a -> ParserT st e a)
-> ParserT st e a -> ParserT st e a
forall a b. (a -> b) -> a -> b
$ (ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e a)
-> ParserT st e a
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 a)
 -> ParserT st e a)
-> (ForeignPtrContents -> Addr# -> Addr# -> st -> Res# st e a)
-> ParserT st e a
forall a b. (a -> b) -> a -> b
$ \ForeignPtrContents
_fp Addr#
_eob Addr#
buf st
st ->
    st -> a -> Addr# -> Res# st e a
forall (st :: ZeroBitType) a e. st -> a -> Addr# -> Res# st e a
OK# st
st (Addr# -> Int# -> a
forall a. Prim' a => Addr# -> Int# -> a
indexWord8OffAddrAs# Addr#
buf Int#
0#) (Addr#
buf Addr# -> Int# -> Addr#
`plusAddr#` Int#
size#)
  where
    size# :: Int#
size# = a -> Int#
forall a. Prim a => a -> Int#
sizeOf# (a
forall a. HasCallStack => a
undefined :: a)