bytepatch-0.2.1: Patch byte-representable data in a bytestream.
Safe HaskellNone
LanguageHaskell2010

BytePatch.Core

Synopsis

Documentation

data Patch (s :: SeekKind) a Source #

Constructors

Patch (SeekRep s) (Edit a) 

Instances

Instances details
Functor (Patch s) Source # 
Instance details

Defined in BytePatch.Core

Methods

fmap :: (a -> b) -> Patch s a -> Patch s b

(<$) :: a -> Patch s b -> Patch s a

Foldable (Patch s) Source # 
Instance details

Defined in BytePatch.Core

Methods

fold :: Monoid m => Patch s m -> m

foldMap :: Monoid m => (a -> m) -> Patch s a -> m

foldMap' :: Monoid m => (a -> m) -> Patch s a -> m

foldr :: (a -> b -> b) -> b -> Patch s a -> b

foldr' :: (a -> b -> b) -> b -> Patch s a -> b

foldl :: (b -> a -> b) -> b -> Patch s a -> b

foldl' :: (b -> a -> b) -> b -> Patch s a -> b

foldr1 :: (a -> a -> a) -> Patch s a -> a

foldl1 :: (a -> a -> a) -> Patch s a -> a

toList :: Patch s a -> [a]

null :: Patch s a -> Bool

length :: Patch s a -> Int

elem :: Eq a => a -> Patch s a -> Bool

maximum :: Ord a => Patch s a -> a

minimum :: Ord a => Patch s a -> a

sum :: Num a => Patch s a -> a

product :: Num a => Patch s a -> a

Traversable (Patch s) Source # 
Instance details

Defined in BytePatch.Core

Methods

traverse :: Applicative f => (a -> f b) -> Patch s a -> f (Patch s b)

sequenceA :: Applicative f => Patch s (f a) -> f (Patch s a)

mapM :: Monad m => (a -> m b) -> Patch s a -> m (Patch s b)

sequence :: Monad m => Patch s (m a) -> m (Patch s a)

(Eq (SeekRep s), Eq a) => Eq (Patch s a) Source # 
Instance details

Defined in BytePatch.Core

Methods

(==) :: Patch s a -> Patch s a -> Bool

(/=) :: Patch s a -> Patch s a -> Bool

(Show (SeekRep s), Show a) => Show (Patch s a) Source # 
Instance details

Defined in BytePatch.Core

Methods

showsPrec :: Int -> Patch s a -> ShowS

show :: Patch s a -> String

showList :: [Patch s a] -> ShowS

Generic (Patch s a) Source # 
Instance details

Defined in BytePatch.Core

Associated Types

type Rep (Patch s a) :: Type -> Type

Methods

from :: Patch s a -> Rep (Patch s a) x

to :: Rep (Patch s a) x -> Patch s a

type Rep (Patch s a) Source # 
Instance details

Defined in BytePatch.Core

type Rep (Patch s a) = D1 ('MetaData "Patch" "BytePatch.Core" "bytepatch-0.2.1-inplace" 'False) (C1 ('MetaCons "Patch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SeekRep s)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Edit a))))

data SeekKind Source #

Constructors

FwdSeek

seeks only move cursor forward

CursorSeek

seeks move cursor forward or backward

AbsSeek

seeks specify an exact offset in stream

Instances

Instances details
Eq SeekKind Source # 
Instance details

Defined in BytePatch.Core

Methods

(==) :: SeekKind -> SeekKind -> Bool

(/=) :: SeekKind -> SeekKind -> Bool

Show SeekKind Source # 
Instance details

Defined in BytePatch.Core

Methods

showsPrec :: Int -> SeekKind -> ShowS

show :: SeekKind -> String

showList :: [SeekKind] -> ShowS

Generic SeekKind Source # 
Instance details

Defined in BytePatch.Core

Associated Types

type Rep SeekKind :: Type -> Type

Methods

from :: SeekKind -> Rep SeekKind x

to :: Rep SeekKind x -> SeekKind

type Rep SeekKind Source # 
Instance details

Defined in BytePatch.Core

type Rep SeekKind = D1 ('MetaData "SeekKind" "BytePatch.Core" "bytepatch-0.2.1-inplace" 'False) (C1 ('MetaCons "FwdSeek" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CursorSeek" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AbsSeek" 'PrefixI 'False) (U1 :: Type -> Type)))

type family SeekRep (s :: SeekKind) where ... Source #

Equations

SeekRep 'FwdSeek = Natural 
SeekRep 'CursorSeek = Integer 
SeekRep 'AbsSeek = Natural 

data Edit a Source #

Data to add to a stream.

Constructors

Edit 

Fields

Instances

Instances details
Functor Edit Source # 
Instance details

Defined in BytePatch.Core

Methods

fmap :: (a -> b) -> Edit a -> Edit b

(<$) :: a -> Edit b -> Edit a

Foldable Edit Source # 
Instance details

Defined in BytePatch.Core

Methods

fold :: Monoid m => Edit m -> m

foldMap :: Monoid m => (a -> m) -> Edit a -> m

foldMap' :: Monoid m => (a -> m) -> Edit a -> m

foldr :: (a -> b -> b) -> b -> Edit a -> b

foldr' :: (a -> b -> b) -> b -> Edit a -> b

foldl :: (b -> a -> b) -> b -> Edit a -> b

foldl' :: (b -> a -> b) -> b -> Edit a -> b

foldr1 :: (a -> a -> a) -> Edit a -> a

foldl1 :: (a -> a -> a) -> Edit a -> a

toList :: Edit a -> [a]

null :: Edit a -> Bool

length :: Edit a -> Int

elem :: Eq a => a -> Edit a -> Bool

maximum :: Ord a => Edit a -> a

minimum :: Ord a => Edit a -> a

sum :: Num a => Edit a -> a

product :: Num a => Edit a -> a

Traversable Edit Source # 
Instance details

Defined in BytePatch.Core

Methods

traverse :: Applicative f => (a -> f b) -> Edit a -> f (Edit b)

sequenceA :: Applicative f => Edit (f a) -> f (Edit a)

mapM :: Monad m => (a -> m b) -> Edit a -> m (Edit b)

sequence :: Monad m => Edit (m a) -> m (Edit a)

Eq a => Eq (Edit a) Source # 
Instance details

Defined in BytePatch.Core

Methods

(==) :: Edit a -> Edit a -> Bool

(/=) :: Edit a -> Edit a -> Bool

Show a => Show (Edit a) Source # 
Instance details

Defined in BytePatch.Core

Methods

showsPrec :: Int -> Edit a -> ShowS

show :: Edit a -> String

showList :: [Edit a] -> ShowS

Generic (Edit a) Source # 
Instance details

Defined in BytePatch.Core

Associated Types

type Rep (Edit a) :: Type -> Type

Methods

from :: Edit a -> Rep (Edit a) x

to :: Rep (Edit a) x -> Edit a

FromJSON a => FromJSON (Edit a) 
Instance details

Defined in BytePatch.JSON

Methods

parseJSON :: Value -> Parser (Edit a)

parseJSONList :: Value -> Parser [Edit a]

ToJSON a => ToJSON (Edit a) 
Instance details

Defined in BytePatch.JSON

Methods

toJSON :: Edit a -> Value

toEncoding :: Edit a -> Encoding

toJSONList :: [Edit a] -> Value

toEncodingList :: [Edit a] -> Encoding

type Rep (Edit a) Source # 
Instance details

Defined in BytePatch.Core

type Rep (Edit a) = D1 ('MetaData "Edit" "BytePatch.Core" "bytepatch-0.2.1-inplace" 'False) (C1 ('MetaCons "Edit" 'PrefixI 'True) (S1 ('MetaSel ('Just "editData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "editMeta") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (EditMeta a))))

data EditMeta a Source #

Various optional metadata defining expected existing data for an Edit.

Constructors

EditMeta 

Fields

  • emNullTerminates :: Maybe Int

    Stream segment should be null bytes (0x00) only from this index onwards.

  • emExpected :: Maybe a

    Stream segment should be this.

Instances

Instances details
Functor EditMeta Source # 
Instance details

Defined in BytePatch.Core

Methods

fmap :: (a -> b) -> EditMeta a -> EditMeta b

(<$) :: a -> EditMeta b -> EditMeta a

Foldable EditMeta Source # 
Instance details

Defined in BytePatch.Core

Methods

fold :: Monoid m => EditMeta m -> m

foldMap :: Monoid m => (a -> m) -> EditMeta a -> m

foldMap' :: Monoid m => (a -> m) -> EditMeta a -> m

foldr :: (a -> b -> b) -> b -> EditMeta a -> b

foldr' :: (a -> b -> b) -> b -> EditMeta a -> b

foldl :: (b -> a -> b) -> b -> EditMeta a -> b

foldl' :: (b -> a -> b) -> b -> EditMeta a -> b

foldr1 :: (a -> a -> a) -> EditMeta a -> a

foldl1 :: (a -> a -> a) -> EditMeta a -> a

toList :: EditMeta a -> [a]

null :: EditMeta a -> Bool

length :: EditMeta a -> Int

elem :: Eq a => a -> EditMeta a -> Bool

maximum :: Ord a => EditMeta a -> a

minimum :: Ord a => EditMeta a -> a

sum :: Num a => EditMeta a -> a

product :: Num a => EditMeta a -> a

Traversable EditMeta Source # 
Instance details

Defined in BytePatch.Core

Methods

traverse :: Applicative f => (a -> f b) -> EditMeta a -> f (EditMeta b)

sequenceA :: Applicative f => EditMeta (f a) -> f (EditMeta a)

mapM :: Monad m => (a -> m b) -> EditMeta a -> m (EditMeta b)

sequence :: Monad m => EditMeta (m a) -> m (EditMeta a)

Eq a => Eq (EditMeta a) Source # 
Instance details

Defined in BytePatch.Core

Methods

(==) :: EditMeta a -> EditMeta a -> Bool

(/=) :: EditMeta a -> EditMeta a -> Bool

Show a => Show (EditMeta a) Source # 
Instance details

Defined in BytePatch.Core

Methods

showsPrec :: Int -> EditMeta a -> ShowS

show :: EditMeta a -> String

showList :: [EditMeta a] -> ShowS

Generic (EditMeta a) Source # 
Instance details

Defined in BytePatch.Core

Associated Types

type Rep (EditMeta a) :: Type -> Type

Methods

from :: EditMeta a -> Rep (EditMeta a) x

to :: Rep (EditMeta a) x -> EditMeta a

FromJSON a => FromJSON (EditMeta a) 
Instance details

Defined in BytePatch.JSON

Methods

parseJSON :: Value -> Parser (EditMeta a)

parseJSONList :: Value -> Parser [EditMeta a]

ToJSON a => ToJSON (EditMeta a) 
Instance details

Defined in BytePatch.JSON

Methods

toJSON :: EditMeta a -> Value

toEncoding :: EditMeta a -> Encoding

toJSONList :: [EditMeta a] -> Value

toEncodingList :: [EditMeta a] -> Encoding

type Rep (EditMeta a) Source # 
Instance details

Defined in BytePatch.Core

type Rep (EditMeta a) = D1 ('MetaData "EditMeta" "BytePatch.Core" "bytepatch-0.2.1-inplace" 'False) (C1 ('MetaCons "EditMeta" 'PrefixI 'True) (S1 ('MetaSel ('Just "emNullTerminates") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "emExpected") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe a))))