module BytePatch.Linear.Core where

import           BytePatch.Core

-- | A list of "keep n bytes, write data in-place" actions.
type Patchscript a = [(Int, Overwrite a)]

-- | Write the given data into the given offset.
data Patch a = Patch
  { Patch a -> a
patchContents :: a
  , Patch a -> Int
patchOffset   :: Int
  , Patch a -> OverwriteMeta a
patchMeta     :: OverwriteMeta a
  } deriving (Patch a -> Patch a -> Bool
(Patch a -> Patch a -> Bool)
-> (Patch a -> Patch a -> Bool) -> Eq (Patch a)
forall a. Eq a => Patch a -> Patch a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Patch a -> Patch a -> Bool
$c/= :: forall a. Eq a => Patch a -> Patch a -> Bool
== :: Patch a -> Patch a -> Bool
$c== :: forall a. Eq a => Patch a -> Patch a -> Bool
Eq, Int -> Patch a -> ShowS
[Patch a] -> ShowS
Patch a -> String
(Int -> Patch a -> ShowS)
-> (Patch a -> String) -> ([Patch a] -> ShowS) -> Show (Patch a)
forall a. Show a => Int -> Patch a -> ShowS
forall a. Show a => [Patch a] -> ShowS
forall a. Show a => Patch a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Patch a] -> ShowS
$cshowList :: forall a. Show a => [Patch a] -> ShowS
show :: Patch a -> String
$cshow :: forall a. Show a => Patch a -> String
showsPrec :: Int -> Patch a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Patch a -> ShowS
Show)