OpenAFP 1.3 → 1.3.1
raw patch · 2 files changed
+3/−3 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ OpenAFP.Prelude.Utils: ($$) :: (MonadIO m, MonadReader t m) => (t -> Bool) -> [Char] -> m ()
+ OpenAFP.Prelude.Utils: ($=) :: (MonadIO m, MonadReader t m) => (t -> IORef a) -> (t1 -> a) -> t1 -> m ()
+ OpenAFP.Prelude.Utils: (%%=) :: (Ix i, MonadIO m, MonadReader t m) => (t -> IOArray i e) -> [(i, e)] -> m ()
+ OpenAFP.Prelude.Utils: (%:) :: (MonadIO m, MonadReader t m) => (t -> HashTable key b) -> key -> m b
+ OpenAFP.Prelude.Utils: (%=) :: (MonadIO m, MonadReader t m) => (t -> HashTable key val) -> (key, val) -> m ()
+ OpenAFP.Prelude.Utils: (%?) :: (MonadIO m, MonadReader t m) => (t -> HashTable key val) -> key -> m (Maybe val)
+ OpenAFP.Prelude.Utils: (+=) :: (Num a, MonadIO m, MonadReader t m) => (t -> IORef a) -> (t1 -> a) -> t1 -> m ()
+ OpenAFP.Prelude.Utils: (@=) :: (MonadIO m, MonadReader t m) => (t -> IORef [a]) -> a -> m ()
+ OpenAFP.Prelude.Utils: fromJust' :: Maybe t -> t
+ OpenAFP.Prelude.Utils: fromJust'' :: Maybe t -> t
+ OpenAFP.Prelude.Utils: hashByteString :: ByteString -> Int32
+ OpenAFP.Prelude.Utils: hex2bin :: Char -> [Char]
+ OpenAFP.Prelude.Utils: noArg :: [Char] -> [String] -> String -> a -> OptDescr a
+ OpenAFP.Prelude.Utils: readArray :: (Ix i, MonadIO m, MonadReader t m) => (t -> IOArray i b) -> i -> m b
+ OpenAFP.Prelude.Utils: readVar :: (MonadIO m, MonadReader t m) => (t -> IORef b) -> m b
+ OpenAFP.Prelude.Utils: reqArg :: [Char] -> [String] -> String -> String -> (String -> a) -> OptDescr a
+ OpenAFP.Prelude.Utils: showUsage :: [OptDescr a] -> (String -> [Char]) -> [Char] -> IO b
+ OpenAFP.Types.Chunk: (...) :: (Monad m, Rec a, Chunk c) => a -> (a -> m t) -> (ChunkType, c -> m [c])
+ OpenAFP.Types.Chunk: (....) :: (Monad m, Monad (t1 m), MonadTrans t1, Rec a, Chunk c) => a -> (a -> m t) -> (ChunkType, c -> t1 m [c])
+ OpenAFP.Types.Chunk: (.....) :: (Monad m, Monad (t2 m), Monad (t1 (t2 m)), MonadTrans t2, MonadTrans t1, Rec a, Chunk c) => a -> (a -> m t) -> (ChunkType, c -> t1 (t2 m) [c])
+ OpenAFP.Types.Chunk: (===) :: (Monad m, Rec r, Chunk c) => r -> (r -> ChunkWriter c m a) -> (ChunkType, c -> m [c])
+ OpenAFP.Types.Chunk: nullForeignPtr :: ForeignPtr a
- OpenAFP.Prelude.Utils: matchRecord :: ((DataOf a) ~ b, (RecOf b) ~ a, RecData a b, Eq c) => c -> (b -> c) -> a -> b
+ OpenAFP.Prelude.Utils: matchRecord :: (DataOf a ~ b, RecOf b ~ a, RecData a b, Eq c) => c -> (b -> c) -> a -> b
- OpenAFP.Prelude.Utils: matchRecordMaybe :: ((DataOf a) ~ b, (RecOf b) ~ a, RecData a b, Eq c) => c -> (b -> c) -> a -> Maybe b
+ OpenAFP.Prelude.Utils: matchRecordMaybe :: (DataOf a ~ b, RecOf b ~ a, RecData a b, Eq c) => c -> (b -> c) -> a -> Maybe b
- OpenAFP.Types.Chunk: class (Show c, Typeable c, Buf (BufOf c), Enum (N c), Num (N c)) => Chunk c where { type family N c; type family BufOf c; { mkChunk = curry chunkCon chunkCon = uncurry mkChunk chunkType c = chunkTypeLookup c . fst $ chunkDecon c chunkMapFiltersM_ c possibleFilters = mapM_ (\ (_, f) -> f c) filters where filters = filter (\ (t, _) -> (t == chunkType c)) possibleFilters chunkMapFiltersM c possibleFilters = foldM applyF [c] filters where filters = filter (\ (t, _) -> (t == chunkType c)) possibleFilters applyF r (_, f) = liftM concat (mapM f r) chunksMapFiltersM cs list = liftM concat (mapM (`chunkMapFiltersM` list) cs) chunksMapFiltersM_ cs list = mapM_ (`chunkMapFiltersM_` list) cs decodeChunk c = fromRecord (decode (fromChunks [packChunk c])) encodeChunk item = mkChunk (toEnum (recType item)) bs where bs = mkBuf $ concat (toChunks (encode item)) packChunk c = packBuf buf where (_, buf) = chunkDecon c } }
+ OpenAFP.Types.Chunk: class (Show c, Typeable c, Buf (BufOf c), Enum (N c), Num (N c)) => Chunk c where type family N c type family BufOf c mkChunk = curry chunkCon chunkCon = uncurry mkChunk chunkType c = chunkTypeLookup c . fst $ chunkDecon c chunkMapFiltersM_ c possibleFilters = mapM_ (\ (_, f) -> f c) filters where filters = filter (\ (t, _) -> (t == chunkType c)) possibleFilters chunkMapFiltersM c possibleFilters = foldM applyF [c] filters where filters = filter (\ (t, _) -> (t == chunkType c)) possibleFilters applyF r (_, f) = liftM concat (mapM f r) chunksMapFiltersM cs list = liftM concat (mapM (`chunkMapFiltersM` list) cs) chunksMapFiltersM_ cs list = mapM_ (`chunkMapFiltersM_` list) cs decodeChunk c = fromRecord (decode (fromChunks [packChunk c])) encodeChunk item = mkChunk (toEnum (recType item)) bs where bs = mkBuf $ concat (toChunks (encode item)) packChunk c = packBuf buf where (_, buf) = chunkDecon c
- OpenAFP.Types.Chunk: class (Rec r, Chunk (ChunkOf r)) => RecChunk r where { type family ChunkOf r; { readChunks = error "readChunks not defined" writeChunks = error "writeChunks not defined" } }
+ OpenAFP.Types.Chunk: class (Rec r, Chunk (ChunkOf r)) => RecChunk r where type family ChunkOf r readChunks = error "readChunks not defined" writeChunks = error "writeChunks not defined"
- OpenAFP.Types.Chunk: class (Rec a, Rec b) => RecData a b where { type family DataOf a; type family RecOf b; { readData = error "readData not defined" writeData = error "writeData not defined" } }
+ OpenAFP.Types.Chunk: class (Rec a, Rec b) => RecData a b where type family DataOf a type family RecOf b readData = error "readData not defined" writeData = error "writeData not defined"
- OpenAFP.Types.Chunk: readData :: (RecData a b, (DataOf a) ~ b, (RecOf b) ~ a) => a -> [Record b]
+ OpenAFP.Types.Chunk: readData :: (RecData a b, DataOf a ~ b, RecOf b ~ a) => a -> [Record b]
- OpenAFP.Types.Chunk: writeData :: (RecData a b, (DataOf a) ~ b, (RecOf b) ~ a) => a -> [Record b] -> a
+ OpenAFP.Types.Chunk: writeData :: (RecData a b, DataOf a ~ b, RecOf b ~ a) => a -> [Record b] -> a
- OpenAFP.Types.Record: class (Show a, Typeable a) => Rec a
+ OpenAFP.Types.Record: class (Show a, Typeable a) => Rec a where recGet = error "recGet not defined" recPut x = error ("recPut not defined: " ++ show x) recSizeOf x = error ("recSizeOf not defined: " ++ show x) recView x = error ("recView not defined: " ++ show x) recType x = error ("recType not defined: " ++ show x)
Files
- OpenAFP.cabal +2/−2
- src/OpenAFP/Internals/Binary.hs +1/−1
OpenAFP.cabal view
@@ -1,10 +1,10 @@ name: OpenAFP-version: 1.3+version: 1.3.1 license: PublicDomain License-file: LICENSE cabal-version: >= 1.6 author: Audrey Tang-Tested-With: GHC==6.10.1, GHC==6.12.1, GHC==7.0.1, GHC==7.2.1+Tested-With: GHC==6.10.1, GHC==6.12.1, GHC==7.0.1, GHC==7.2.1, GHC==7.4.1 maintainer: audreyt@audreyt.org homepage: https://github.com/audreyt/openafp/ synopsis: IBM AFP document format parser and generator
src/OpenAFP/Internals/Binary.hs view
@@ -102,7 +102,7 @@ instance Show A12 where show = zeropad 12 {-# INLINE zeropad #-}-zeropad :: (Integral a) => Int -> a -> String+zeropad :: (Show a, Integral a) => Int -> a -> String zeropad len str = replicate len' '0' ++ str' where str' = map toUpper $ showHex str "" len' = 2*len - length str'