-- 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.Instances -- import File.Binary.Instances.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)[OPENBRACKET](Int, Int, Int)[CLOSEBRACKET]: colors -- ((), image_size)[OPENBRACKET]String[CLOSEBRACKET]: image -- -- |] --@package binary-file @version 0.14.1 module File.Binary.Instances.LittleEndian wordsToInt :: Integral i => [Word8] -> i intToWords :: Integral i => Int -> i -> [Word8] instance Field Integer instance Field Int module File.Binary.Instances.BigEndian intToWords :: Integral i => Int -> i -> [Word8] instance Field Integer instance Field Int module File.Binary.Instances instance Binary ByteString instance Binary ByteString instance Binary String instance Field r => Field [r] instance Field Char instance Field ByteString 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 (Eq b, Monoid b) => Binary b getBytes :: Binary b => Int -> b -> (ByteString, b) makeBinary :: Binary b => ByteString -> b