module Bind.Marshal.Action.Base
where
import Bind.Marshal.Prelude
import qualified Prelude
import Bind.Marshal.DataModel
import Control.DeepSeq
import Foreign.Ptr
import GHC.Prim
type family BufferReq action
data BufferRegion tag = BufferRegion
{ buffer_region_start :: !BytePtr
, buffer_region_size :: !Size
}
buffer_region_end :: BufferRegion tag -> BytePtr
buffer_region_end (BufferRegion start size) = start `plusPtr` size
pop_bytes :: BufferRegion tag -> Size -> BufferRegion tag
pop_bytes (BufferRegion start size) !to_pop
= BufferRegion (start `plusPtr` to_pop)
(size to_pop)
instance NFData (BufferRegion tag) where
rnf (BufferRegion !start !size) = ()
type Iter = Ptr Word8