binrep-0.3.0: src/Binrep/Example/Wav.hs
module Binrep.Example.Wav where
import Binrep
import Binrep.Generic
import Binrep.Type.Common ( Endianness(..) )
import Binrep.Type.Int
import Binrep.Type.Magic
import GHC.Generics ( Generic )
import Data.Data ( Data )
type End = 'LE
type W32 = I 'U 'I4 End
type W16 = I 'U 'I2 End
data WavHeader = WavHeader
{ wavHeaderMagic :: Magic "RIFF"
, wavHeaderChunkSize :: W32 -- file size - 8
, wavHeaderFmt :: Magic "WAVE"
, wavHeaderFmtChunkMarker :: Magic "fmt "
, wavHeaderFmtType :: W16
, wavHeaderChannels :: W16
} deriving stock (Generic, Data, Show, Eq)
instance BLen WavHeader where blen = blenGeneric cNoSum
instance Put WavHeader where put = putGeneric cNoSum
instance Get WavHeader where get = getGeneric cNoSum