module Media.Streaming.GStreamer.Audio.Types
( module Media.Streaming.GStreamer.Core.Types
, module Media.Streaming.GStreamer.Audio.Constants
, AudioFieldFlag(..)
) where
import Media.Streaming.GStreamer.Audio.Constants
import Media.Streaming.GStreamer.Core.Types
data AudioFieldFlag = AudioFieldRate
| AudioFieldChannels
| AudioFieldEndianness
| AudioFieldWidth
| AudioFieldDepth
| AudioFieldSigned
instance Enum AudioFieldFlag where
fromEnum AudioFieldRate = 1
fromEnum AudioFieldChannels = 2
fromEnum AudioFieldEndianness = 4
fromEnum AudioFieldWidth = 8
fromEnum AudioFieldDepth = 16
fromEnum AudioFieldSigned = 32
toEnum 1 = AudioFieldRate
toEnum 2 = AudioFieldChannels
toEnum 4 = AudioFieldEndianness
toEnum 8 = AudioFieldWidth
toEnum 16 = AudioFieldDepth
toEnum 32 = AudioFieldSigned
toEnum unmatched = error ("AudioFieldFlag.toEnum: Cannot match " ++ show unmatched)
succ AudioFieldRate = AudioFieldChannels
succ AudioFieldChannels = AudioFieldEndianness
succ AudioFieldEndianness = AudioFieldWidth
succ AudioFieldWidth = AudioFieldDepth
succ AudioFieldDepth = AudioFieldSigned
succ _ = undefined
pred AudioFieldChannels = AudioFieldRate
pred AudioFieldEndianness = AudioFieldChannels
pred AudioFieldWidth = AudioFieldEndianness
pred AudioFieldDepth = AudioFieldWidth
pred AudioFieldSigned = AudioFieldDepth
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x AudioFieldSigned
enumFromThen _ _ = error "Enum AudioFieldFlag: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum AudioFieldFlag: enumFromThenTo not implemented"