binary-file-0.15.0: examples/tiny.hs
{-# LANGUAGE QuasiQuotes, TypeFamilies, ScopedTypeVariables #-}
import File.Binary (binary, Field(..), readBinaryFile, writeBinaryFile)
import File.Binary.Instances ()
-- import File.Binary.Instances.LittleEndian ()
import File.Binary.Instances.BigEndian ()
import Control.Applicative ((<$>))
import Numeric (showHex)
import System.Environment (getArgs)
--------------------------------------------------------------------------------
size :: Int
size = 2
main :: IO ()
main = do
n <- read . head <$> getArgs
writeBinaryFile "tmp/out/tiny.dat" $ toBinary n $ Tiny 0x0123456789abcdef
(t ::Tiny, "") <- fromBinary n <$> readBinaryFile "tmp/out/tiny.dat"
print t
putStrLn $ flip showHex "" $ value t
[binary|
Tiny deriving Show
arg :: Int
4: "tiny"
: True
: False
: False
: False
: True
: False
: False
: True
Main.size * arg{Integer}: value
|]