packages feed

primitive-offset-0.2.0.1: src/Data/Primitive/ByteArray/Offset.hs

{-# LANGUAGE DuplicateRecordFields #-}

module Data.Primitive.ByteArray.Offset
  ( -- * Types
    ByteArrayOffset (..)
  , MutableByteArrayOffset (..)
  ) where

import Data.Primitive (ByteArray, MutableByteArray)

{- | A byte array and an index into the array. The element
type is understood to be byte (an 8-bit word).
-}
data ByteArrayOffset = ByteArrayOffset
  { array :: {-# UNPACK #-} !ByteArray
  , offset :: {-# UNPACK #-} !Int
  }

{- | A mutable byte array and an index into the array. The element
type is understood to be byte (an 8-bit word).
-}
data MutableByteArrayOffset s = MutableByteArrayOffset
  { array :: {-# UNPACK #-} !(MutableByteArray s)
  , offset :: {-# UNPACK #-} !Int
  }