-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | read/write binary file -- -- See example directory's sample code. -- --
-- runghc -XQuasiQuotes -XTypeFamilies -XFlexibleInstances exam.hs some.bmp ---- -- exam.hs: -- --
-- import File.Binary -- import File.Binary.Data.LittleEndian -- import System.Environment -- import Data.ByteString.Lazy as BSL -- -- main = do -- [inf] <- getArgs -- cnt <- BS.readFile inf -- let (bmp, rest) = fromBinary () cnt :: (Bitmap, String) -- print bmp -- -- instance Field (Int, Int, Int) where -- type FieldArgument (Int, Int, Int) = () -- fromBinary _ s = let -- (b, rest) = toType 1 s -- (g, rest') = toType 1 rest -- (r, rest'') = toType 1 rest' in -- ((b, g, r), snd $ getBytes 1 1 rest'') -- toBinary _ (b, g, r) = concatBinary [ -- fromType 1 b, fromType 1 g, fromType 1 r, -- makeBinary $ BSL.singleton 0] -- -- [binary| -- -- Bitmap -- -- 2: "BM" -- 4: file_size -- 2: 0 -- 2: 0 -- 4: offset -- -- 4: 40 -- 4: width -- 4: height -- 2: 1 -- 2: bits_per_pixel -- 4: compression -- 4: image_size -- 4: resolutionH -- 4: resolutionV -- 4: color_num -- 4: important_color_num -- ((), Just color_num)<[(Int, Int, Int)]>: colors -- ((), image_size)<String>: image -- -- |] --@package binary-file @version 0.13.2 module File.Binary.Data.LittleEndian instance Field Int module File.Binary.Data.BigEndian lintToBin :: Int -> Integer -> String instance Field Int module File.Binary readBinaryFile :: FilePath -> IO String writeBinaryFile :: FilePath -> String -> IO () binary :: QuasiQuoter class Field r where type family FieldArgument r fromBinary :: (Field r, Binary s) => FieldArgument r -> s -> (r, s) toBinary :: (Field r, Binary s) => FieldArgument r -> r -> s class Binary a getBytes :: Binary a => Int -> a -> (ByteString, a) makeBinary :: Binary a => ByteString -> a concatBinary :: Binary a => [a] -> a emptyBinary :: Binary a => a -> Bool tii :: Binary a => Int -> a -> (Int, a) fii :: Binary a => Int -> Int -> a