png-chunk-yaftee 0.1.0.0 → 0.1.0.1
raw patch · 2 files changed
+25/−18 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Control.Monad.Yaftee.Pipe.Png.Chunk: type DecodeMembers (nm :: Symbol) (es :: [Type -> Type -> Type -> Type -> Type -> Type -> Type -> Type]) = (Members nm es, Member Named nm C es)
+ Control.Monad.Yaftee.Pipe.Png.Chunk: type EncodeMembers (nm :: Symbol) (es :: [Type -> Type -> Type -> Type -> Type -> Type -> Type -> Type]) = Member Named nm C es
- Control.Monad.Yaftee.Pipe.Png.Chunk: decode :: forall (es :: [(Type -> Type -> Type -> Type) -> Type -> Type -> Type -> Type]). forall (nm :: Symbol) -> (Member P es, Members nm es, Member (Named nm C) es, Member (E String) es) => Int -> E es ByteString C ()
+ Control.Monad.Yaftee.Pipe.Png.Chunk: decode :: forall (es :: [(Type -> Type -> Type -> Type) -> Type -> Type -> Type -> Type]). forall (nm :: Symbol) -> (Member P es, DecodeMembers nm es, Member (E String) es) => Int -> E es ByteString C ()
- Control.Monad.Yaftee.Pipe.Png.Chunk: hDecode :: forall (es :: [(Type -> Type -> Type -> Type) -> Type -> Type -> Type -> Type]). forall (nm :: Symbol) -> (Member P es, Members nm es, Member (Named nm C) es, Member (E String) es, Base I es) => Handle -> Int -> Int -> E es ByteString C ()
+ Control.Monad.Yaftee.Pipe.Png.Chunk: hDecode :: forall (es :: [(Type -> Type -> Type -> Type) -> Type -> Type -> Type -> Type]). forall (nm :: Symbol) -> (Member P es, DecodeMembers nm es, Member (E String) es, Base I es) => Handle -> Int -> Int -> E es ByteString C ()
- Control.Monad.Yaftee.Pipe.Png.Chunk: type EncodeStates (nm :: Symbol) = Named nm C ': States nm
+ Control.Monad.Yaftee.Pipe.Png.Chunk: type EncodeStates (nm :: Symbol) = '[Named nm C]
Files
png-chunk-yaftee.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: png-chunk-yaftee-version: 0.1.0.0+version: 0.1.0.1 synopsis: PNG's chunk codec on Yaftee description: Please see the README on GitHub at <https://github.com/YoshikuniJujo/png-chunk-yaftee#readme> category: Codec,Graphics,Image
src/Control/Monad/Yaftee/Pipe/Png/Chunk.hs view
@@ -3,7 +3,7 @@ {-# LANGUAGE ScopedTypeVariables, TypeApplications #-} {-# LANGUAGE RequiredTypeArguments #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DataKinds, ConstraintKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-}@@ -16,11 +16,11 @@ -- * DECODE - decode, hDecode, decodeRun_, DecodeStates,+ decodeRun_, DecodeStates, decode, hDecode, DecodeMembers, -- * ENCODE - encode, hEncode, encodeRun_, EncodeStates+ encodeRun_, EncodeStates, encode, hEncode, EncodeMembers ) where @@ -53,10 +53,17 @@ import Numeric +decodeRun_ ::+ F.Loose (U.U es) =>+ Eff.E (DecodeStates nm `Append` es) i o r -> Eff.E es i o ()+decodeRun_ = void . (`State.runN` Crc32.initial) +type DecodeStates nm = '[State.Named nm Crc32.C]++ decode :: forall nm -> (- U.Member Pipe.P es, OnDemand.Members nm es,- U.Member (State.Named nm Crc32.C) es, U.Member (Except.E String) es ) =>+ U.Member Pipe.P es, DecodeMembers nm es,+ U.Member (Except.E String) es ) => Int -> Eff.E es BSF.ByteString C () decode nm n = void $ OnDemand.onDemand nm Pipe.=$= PipeCrc32.crc32 nm Pipe.=$= do State.putN nm $ OnDemand.RequestBytes 8@@ -66,15 +73,18 @@ chunks nm n hDecode :: forall nm -> (- U.Member Pipe.P es, OnDemand.Members nm es,- U.Member (State.Named nm Crc32.C) es, U.Member (Except.E String) es,- U.Base IO.I es ) =>+ U.Member Pipe.P es, DecodeMembers nm es,+ U.Member (Except.E String) es, U.Base IO.I es ) => Handle -> Int -> Int -> Eff.E es BSF.ByteString C () hDecode nm h n n' = void $ PipeBS.hGet n h Pipe.=$= PipeT.convert BSF.fromStrict Pipe.=$= decode nm n' +type DecodeMembers nm es = (+ OnDemand.Members nm es,+ U.Member (State.Named nm Crc32.C) es )+ chunks :: forall nm -> ( U.Member Pipe.P es, OnDemand.Members nm es, U.Member (State.Named nm Crc32.C) es, U.Member (Except.E String) es ) =>@@ -113,13 +123,6 @@ 0 -> [] m | n < m -> n : go (m - n) | otherwise -> [m] -decodeRun_ ::- F.Loose (U.U es) =>- Eff.E (DecodeStates nm `Append` es) i o r -> Eff.E es i o ()-decodeRun_ = void . (`State.runN` Crc32.initial)--type DecodeStates nm = '[State.Named nm Crc32.C]- data C = Begin Int BSF.ByteString | Body BSF.ByteString | End | EndOfTheWorld@@ -183,10 +186,14 @@ Pipe.yield . BSF.fromBitsBE' $ Crc32.toWord c pure $ cn /= "IEND" +type EncodeMembers nm es = (+ U.Member (State.Named nm Crc32.C) es+ )+ encodeRun_ :: forall nm es i o r . F.Loose (U.U es) => Eff.E (EncodeStates nm `Append` es) i o r -> Eff.E es i o ()-encodeRun_ = void . OnDemand.run @nm . PipeCrc32.run @nm+encodeRun_ = void . PipeCrc32.run @nm -type EncodeStates nm = State.Named nm Crc32.C ': OnDemand.States nm+type EncodeStates nm = '[State.Named nm Crc32.C]