{-# LINE 1 "Sound/MikMod/Errors.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "Sound/MikMod/Errors.hsc" #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Sound.MikMod.Errors (
  MikModError(..),
  getErrno,
  isNotAnError,
  describeMikModError,
  MikModException(..),
  MikModErrno(..),
  marshalMikModErrno,
  unmarshalMikModErrno,
) where

import Foreign.C.Types
import Data.Typeable
import Control.Exception
import System.IO.Unsafe
import Foreign.C.String


{-# LINE 21 "Sound/MikMod/Errors.hsc" #-}

foreign import ccall safe "mikmod.h MikMod_strerror" c_MikMod_strerror :: CInt -> IO CString

-- | MikMod reports errors as either critical or not. A critical error means
-- the system state was reset because it could not continue in the face of the
-- error.
data MikModError =
  NonCritical MikModErrno |
  Critical MikModErrno
    deriving (Eq, Show)

getErrno :: MikModError -> MikModErrno
getErrno (Critical e)    = e
getErrno (NonCritical e) = e

isNotAnError :: MikModError -> Bool
isNotAnError e = getErrno e == MMErrNoError

-- | The possible things to be found in MikMod_errno
data MikModErrno =
  MMErrNoError |
  MMErrOpeningFile |
  MMErrOutOfMemory |
  MMErrDynamicLinking |
  MMErrSampleTooBig |
  MMErrOutOfHandles |
  MMErrUnknownWaveType |
  MMErrLoadingPattern |
  MMErrLoadingTrack |
  MMErrLoadingHeader |
  MMErrLoadingSampleinfo |
  MMErrNotAModule |
  MMErrNotAStream |
  MMErrMedSynthsamples |
  MMErrItpackInvalidData |
  MMErrDetectingDevice |
  MMErrInvalidDevice |
  MMErrInitializingMixer |
  MMErrOpeningAudio |
  MMErr8bitOnly |
  MMErr16bitOnly |
  MMErrStereoOnly |
  MMErrUlaw |
  MMErrNonBlock |
  MMErrAfAudioPort |
  MMErrAixConfigInit |
  MMErrAixConfigControl |
  MMErrAixConfigStart |
  MMErrGusSettings |
  MMErrGusReset |
  MMErrGusTimer |
  MMErrHpSetsamplesize |
  MMErrHpSetspeed |
  MMErrHpChannels |
  MMErrHpAudioOutput |
  MMErrHpAudioDesc |
  MMErrHpBuffersize |
  MMErrOssSetfragment |
  MMErrOssSetsamplesize |
  MMErrOssSetstereo |
  MMErrOssSetspeed |
  MMErrSgiSpeed |
  MMErrSgi16bit |
  MMErrSgi8bit |
  MMErrSgiStereo |
  MMErrSgiMono |
  MMErrSunInit |
  MMErrOs2Mixsetup |
  MMErrOs2Semaphore |
  MMErrOs2Timer |
  MMErrOs2Thread |
  MMErrDsPriority |
  MMErrDsBuffer |
  MMErrDsFormat |
  MMErrDsNotify |
  MMErrDsEvent |
  MMErrDsThread |
  MMErrDsUpdate |
  MMErrWinmmHandle |
  MMErrWinmmAllocated |
  MMErrWinmmDeviceid |
  MMErrWinmmFormat |
  MMErrWinmmUnknown |
  MMErrMacSpeed |
  MMErrMacStart |
  MMErrOsxUnknownDevice |
  MMErrOsxBadProperty |
  MMErrOsxUnsupportedFormat |
  MMErrOsxSetStereo |
  MMErrOsxBufferAlloc |
  MMErrOsxAddIoProc |
  MMErrOsxDeviceStart |
  MMErrOsxPthread |
  MMErrDoswssStartdma |
  MMErrDossbStartdma |
  MMErrNoFloat32 |
  MMErrOpenalCreatectx |
  MMErrOpenalCtxcurrent |
  MMErrOpenalGenbuffers |
  MMErrOpenalGensources |
  MMErrOpenalSource |
  MMErrOpenalQueuebuffers |
  MMErrOpenalUnqueuebuffers |
  MMErrOpenalBufferdata |
  MMErrOpenalGetsource |
  MMErrOpenalSourceplay |
  MMErrOpenalSourcestop |
  MMErrAlsaNoconfig |
  MMErrAlsaSetparams |
  MMErrAlsaSetformat |
  MMErrAlsaSetrate |
  MMErrAlsaSetchannels |
  MMErrAlsaBuffersize |
  MMErrAlsaPcmStart |
  MMErrAlsaPcmWrite |
  MMErrAlsaPcmRecover |
  MMErrMax |
  MMErrUnknown CInt
    deriving (Eq, Ord, Show)

newtype MikModException = MikModException MikModError
  deriving (Eq, Typeable)

instance Show MikModException where
  show (MikModException e) = "MikModError " ++ describeMikModError e

instance Exception MikModException

describeMikModError :: MikModError -> String
describeMikModError e = unsafePerformIO $ do
  let errno = getErrno e
  msg <- peekCString =<< c_MikMod_strerror (marshalMikModErrno errno)
  case e of
    Critical _ -> return $ "*critical* " ++ msg
    NonCritical _ -> return msg
    

marshalMikModErrno :: MikModErrno -> CInt
marshalMikModErrno e = case e of
  MMErrNoError -> 0
  MMErrOpeningFile -> (1)
{-# LINE 162 "Sound/MikMod/Errors.hsc" #-}
  MMErrOutOfMemory -> (2)
{-# LINE 163 "Sound/MikMod/Errors.hsc" #-}
  MMErrDynamicLinking -> (3)
{-# LINE 164 "Sound/MikMod/Errors.hsc" #-}
  MMErrSampleTooBig -> (4)
{-# LINE 165 "Sound/MikMod/Errors.hsc" #-}
  MMErrOutOfHandles -> (5)
{-# LINE 166 "Sound/MikMod/Errors.hsc" #-}
  MMErrUnknownWaveType -> (6)
{-# LINE 167 "Sound/MikMod/Errors.hsc" #-}
  MMErrLoadingPattern -> (7)
{-# LINE 168 "Sound/MikMod/Errors.hsc" #-}
  MMErrLoadingTrack -> (8)
{-# LINE 169 "Sound/MikMod/Errors.hsc" #-}
  MMErrLoadingHeader -> (9)
{-# LINE 170 "Sound/MikMod/Errors.hsc" #-}
  MMErrLoadingSampleinfo -> (10)
{-# LINE 171 "Sound/MikMod/Errors.hsc" #-}
  MMErrNotAModule -> (11)
{-# LINE 172 "Sound/MikMod/Errors.hsc" #-}
  MMErrNotAStream -> (12)
{-# LINE 173 "Sound/MikMod/Errors.hsc" #-}
  MMErrMedSynthsamples -> (13)
{-# LINE 174 "Sound/MikMod/Errors.hsc" #-}
  MMErrItpackInvalidData -> (14)
{-# LINE 175 "Sound/MikMod/Errors.hsc" #-}
  MMErrDetectingDevice -> (15)
{-# LINE 176 "Sound/MikMod/Errors.hsc" #-}
  MMErrInvalidDevice -> (16)
{-# LINE 177 "Sound/MikMod/Errors.hsc" #-}
  MMErrInitializingMixer -> (17)
{-# LINE 178 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpeningAudio -> (18)
{-# LINE 179 "Sound/MikMod/Errors.hsc" #-}
  MMErr8bitOnly -> (19)
{-# LINE 180 "Sound/MikMod/Errors.hsc" #-}
  MMErr16bitOnly -> (20)
{-# LINE 181 "Sound/MikMod/Errors.hsc" #-}
  MMErrStereoOnly -> (21)
{-# LINE 182 "Sound/MikMod/Errors.hsc" #-}
  MMErrUlaw -> (22)
{-# LINE 183 "Sound/MikMod/Errors.hsc" #-}
  MMErrNonBlock -> (23)
{-# LINE 184 "Sound/MikMod/Errors.hsc" #-}
  MMErrAfAudioPort -> (24)
{-# LINE 185 "Sound/MikMod/Errors.hsc" #-}
  MMErrAixConfigInit -> (25)
{-# LINE 186 "Sound/MikMod/Errors.hsc" #-}
  MMErrAixConfigControl -> (26)
{-# LINE 187 "Sound/MikMod/Errors.hsc" #-}
  MMErrAixConfigStart -> (27)
{-# LINE 188 "Sound/MikMod/Errors.hsc" #-}
  MMErrGusSettings -> (28)
{-# LINE 189 "Sound/MikMod/Errors.hsc" #-}
  MMErrGusReset -> (29)
{-# LINE 190 "Sound/MikMod/Errors.hsc" #-}
  MMErrGusTimer -> (30)
{-# LINE 191 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpSetsamplesize -> (31)
{-# LINE 192 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpSetspeed -> (32)
{-# LINE 193 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpChannels -> (33)
{-# LINE 194 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpAudioOutput -> (34)
{-# LINE 195 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpAudioDesc -> (35)
{-# LINE 196 "Sound/MikMod/Errors.hsc" #-}
  MMErrHpBuffersize -> (36)
{-# LINE 197 "Sound/MikMod/Errors.hsc" #-}
  MMErrOssSetfragment -> (37)
{-# LINE 198 "Sound/MikMod/Errors.hsc" #-}
  MMErrOssSetsamplesize -> (38)
{-# LINE 199 "Sound/MikMod/Errors.hsc" #-}
  MMErrOssSetstereo -> (39)
{-# LINE 200 "Sound/MikMod/Errors.hsc" #-}
  MMErrOssSetspeed -> (40)
{-# LINE 201 "Sound/MikMod/Errors.hsc" #-}
  MMErrSgiSpeed -> (41)
{-# LINE 202 "Sound/MikMod/Errors.hsc" #-}
  MMErrSgi16bit -> (42)
{-# LINE 203 "Sound/MikMod/Errors.hsc" #-}
  MMErrSgi8bit -> (43)
{-# LINE 204 "Sound/MikMod/Errors.hsc" #-}
  MMErrSgiStereo -> (44)
{-# LINE 205 "Sound/MikMod/Errors.hsc" #-}
  MMErrSgiMono -> (45)
{-# LINE 206 "Sound/MikMod/Errors.hsc" #-}
  MMErrSunInit -> (46)
{-# LINE 207 "Sound/MikMod/Errors.hsc" #-}
  MMErrOs2Mixsetup -> (47)
{-# LINE 208 "Sound/MikMod/Errors.hsc" #-}
  MMErrOs2Semaphore -> (48)
{-# LINE 209 "Sound/MikMod/Errors.hsc" #-}
  MMErrOs2Timer -> (49)
{-# LINE 210 "Sound/MikMod/Errors.hsc" #-}
  MMErrOs2Thread -> (50)
{-# LINE 211 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsPriority -> (51)
{-# LINE 212 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsBuffer -> (52)
{-# LINE 213 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsFormat -> (53)
{-# LINE 214 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsNotify -> (54)
{-# LINE 215 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsEvent -> (55)
{-# LINE 216 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsThread -> (56)
{-# LINE 217 "Sound/MikMod/Errors.hsc" #-}
  MMErrDsUpdate -> (57)
{-# LINE 218 "Sound/MikMod/Errors.hsc" #-}
  MMErrWinmmHandle -> (58)
{-# LINE 219 "Sound/MikMod/Errors.hsc" #-}
  MMErrWinmmAllocated -> (59)
{-# LINE 220 "Sound/MikMod/Errors.hsc" #-}
  MMErrWinmmDeviceid -> (60)
{-# LINE 221 "Sound/MikMod/Errors.hsc" #-}
  MMErrWinmmFormat -> (61)
{-# LINE 222 "Sound/MikMod/Errors.hsc" #-}
  MMErrWinmmUnknown -> (62)
{-# LINE 223 "Sound/MikMod/Errors.hsc" #-}
  MMErrMacSpeed -> (63)
{-# LINE 224 "Sound/MikMod/Errors.hsc" #-}
  MMErrMacStart -> (64)
{-# LINE 225 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxUnknownDevice -> (65)
{-# LINE 226 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxBadProperty -> (66)
{-# LINE 227 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxUnsupportedFormat -> (67)
{-# LINE 228 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxSetStereo -> (68)
{-# LINE 229 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxBufferAlloc -> (69)
{-# LINE 230 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxAddIoProc -> (70)
{-# LINE 231 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxDeviceStart -> (71)
{-# LINE 232 "Sound/MikMod/Errors.hsc" #-}
  MMErrOsxPthread -> (72)
{-# LINE 233 "Sound/MikMod/Errors.hsc" #-}
  MMErrDoswssStartdma -> (73)
{-# LINE 234 "Sound/MikMod/Errors.hsc" #-}
  MMErrDossbStartdma -> (74)
{-# LINE 235 "Sound/MikMod/Errors.hsc" #-}
  MMErrNoFloat32 -> (75)
{-# LINE 236 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalCreatectx -> (76)
{-# LINE 237 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalCtxcurrent -> (77)
{-# LINE 238 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalGenbuffers -> (78)
{-# LINE 239 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalGensources -> (79)
{-# LINE 240 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalSource -> (80)
{-# LINE 241 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalQueuebuffers -> (81)
{-# LINE 242 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalUnqueuebuffers -> (82)
{-# LINE 243 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalBufferdata -> (83)
{-# LINE 244 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalGetsource -> (84)
{-# LINE 245 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalSourceplay -> (85)
{-# LINE 246 "Sound/MikMod/Errors.hsc" #-}
  MMErrOpenalSourcestop -> (86)
{-# LINE 247 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaNoconfig -> (87)
{-# LINE 248 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaSetparams -> (88)
{-# LINE 249 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaSetformat -> (89)
{-# LINE 250 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaSetrate -> (90)
{-# LINE 251 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaSetchannels -> (91)
{-# LINE 252 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaBuffersize -> (92)
{-# LINE 253 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaPcmStart -> (93)
{-# LINE 254 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaPcmWrite -> (94)
{-# LINE 255 "Sound/MikMod/Errors.hsc" #-}
  MMErrAlsaPcmRecover -> (95)
{-# LINE 256 "Sound/MikMod/Errors.hsc" #-}
  MMErrMax -> (98)
{-# LINE 257 "Sound/MikMod/Errors.hsc" #-}
  MMErrUnknown n -> n

unmarshalMikModErrno :: CInt -> MikModErrno
unmarshalMikModErrno code = case code of
  0 -> MMErrNoError
  (1) -> MMErrOpeningFile
{-# LINE 263 "Sound/MikMod/Errors.hsc" #-}
  (2) -> MMErrOutOfMemory
{-# LINE 264 "Sound/MikMod/Errors.hsc" #-}
  (3) -> MMErrDynamicLinking
{-# LINE 265 "Sound/MikMod/Errors.hsc" #-}
  (4) -> MMErrSampleTooBig
{-# LINE 266 "Sound/MikMod/Errors.hsc" #-}
  (5) -> MMErrOutOfHandles
{-# LINE 267 "Sound/MikMod/Errors.hsc" #-}
  (6) -> MMErrUnknownWaveType
{-# LINE 268 "Sound/MikMod/Errors.hsc" #-}
  (7) -> MMErrLoadingPattern
{-# LINE 269 "Sound/MikMod/Errors.hsc" #-}
  (8) -> MMErrLoadingTrack
{-# LINE 270 "Sound/MikMod/Errors.hsc" #-}
  (9) -> MMErrLoadingHeader
{-# LINE 271 "Sound/MikMod/Errors.hsc" #-}
  (10) -> MMErrLoadingSampleinfo
{-# LINE 272 "Sound/MikMod/Errors.hsc" #-}
  (11) -> MMErrNotAModule
{-# LINE 273 "Sound/MikMod/Errors.hsc" #-}
  (12) -> MMErrNotAStream
{-# LINE 274 "Sound/MikMod/Errors.hsc" #-}
  (13) -> MMErrMedSynthsamples
{-# LINE 275 "Sound/MikMod/Errors.hsc" #-}
  (14) -> MMErrItpackInvalidData
{-# LINE 276 "Sound/MikMod/Errors.hsc" #-}
  (15) -> MMErrDetectingDevice
{-# LINE 277 "Sound/MikMod/Errors.hsc" #-}
  (16) -> MMErrInvalidDevice
{-# LINE 278 "Sound/MikMod/Errors.hsc" #-}
  (17) -> MMErrInitializingMixer
{-# LINE 279 "Sound/MikMod/Errors.hsc" #-}
  (18) -> MMErrOpeningAudio
{-# LINE 280 "Sound/MikMod/Errors.hsc" #-}
  (19) -> MMErr8bitOnly
{-# LINE 281 "Sound/MikMod/Errors.hsc" #-}
  (20) -> MMErr16bitOnly
{-# LINE 282 "Sound/MikMod/Errors.hsc" #-}
  (21) -> MMErrStereoOnly
{-# LINE 283 "Sound/MikMod/Errors.hsc" #-}
  (22) -> MMErrUlaw
{-# LINE 284 "Sound/MikMod/Errors.hsc" #-}
  (23) -> MMErrNonBlock
{-# LINE 285 "Sound/MikMod/Errors.hsc" #-}
  (24) -> MMErrAfAudioPort
{-# LINE 286 "Sound/MikMod/Errors.hsc" #-}
  (25) -> MMErrAixConfigInit
{-# LINE 287 "Sound/MikMod/Errors.hsc" #-}
  (26) -> MMErrAixConfigControl
{-# LINE 288 "Sound/MikMod/Errors.hsc" #-}
  (27) -> MMErrAixConfigStart
{-# LINE 289 "Sound/MikMod/Errors.hsc" #-}
  (28) -> MMErrGusSettings
{-# LINE 290 "Sound/MikMod/Errors.hsc" #-}
  (29) -> MMErrGusReset
{-# LINE 291 "Sound/MikMod/Errors.hsc" #-}
  (30) -> MMErrGusTimer
{-# LINE 292 "Sound/MikMod/Errors.hsc" #-}
  (31) -> MMErrHpSetsamplesize
{-# LINE 293 "Sound/MikMod/Errors.hsc" #-}
  (32) -> MMErrHpSetspeed
{-# LINE 294 "Sound/MikMod/Errors.hsc" #-}
  (33) -> MMErrHpChannels
{-# LINE 295 "Sound/MikMod/Errors.hsc" #-}
  (34) -> MMErrHpAudioOutput
{-# LINE 296 "Sound/MikMod/Errors.hsc" #-}
  (35) -> MMErrHpAudioDesc
{-# LINE 297 "Sound/MikMod/Errors.hsc" #-}
  (36) -> MMErrHpBuffersize
{-# LINE 298 "Sound/MikMod/Errors.hsc" #-}
  (37) -> MMErrOssSetfragment
{-# LINE 299 "Sound/MikMod/Errors.hsc" #-}
  (38) -> MMErrOssSetsamplesize
{-# LINE 300 "Sound/MikMod/Errors.hsc" #-}
  (39) -> MMErrOssSetstereo
{-# LINE 301 "Sound/MikMod/Errors.hsc" #-}
  (40) -> MMErrOssSetspeed
{-# LINE 302 "Sound/MikMod/Errors.hsc" #-}
  (41) -> MMErrSgiSpeed
{-# LINE 303 "Sound/MikMod/Errors.hsc" #-}
  (42) -> MMErrSgi16bit
{-# LINE 304 "Sound/MikMod/Errors.hsc" #-}
  (43) -> MMErrSgi8bit
{-# LINE 305 "Sound/MikMod/Errors.hsc" #-}
  (44) -> MMErrSgiStereo
{-# LINE 306 "Sound/MikMod/Errors.hsc" #-}
  (45) -> MMErrSgiMono
{-# LINE 307 "Sound/MikMod/Errors.hsc" #-}
  (46) -> MMErrSunInit
{-# LINE 308 "Sound/MikMod/Errors.hsc" #-}
  (47) -> MMErrOs2Mixsetup
{-# LINE 309 "Sound/MikMod/Errors.hsc" #-}
  (48) -> MMErrOs2Semaphore
{-# LINE 310 "Sound/MikMod/Errors.hsc" #-}
  (49) -> MMErrOs2Timer
{-# LINE 311 "Sound/MikMod/Errors.hsc" #-}
  (50) -> MMErrOs2Thread
{-# LINE 312 "Sound/MikMod/Errors.hsc" #-}
  (51) -> MMErrDsPriority
{-# LINE 313 "Sound/MikMod/Errors.hsc" #-}
  (52) -> MMErrDsBuffer
{-# LINE 314 "Sound/MikMod/Errors.hsc" #-}
  (53) -> MMErrDsFormat
{-# LINE 315 "Sound/MikMod/Errors.hsc" #-}
  (54) -> MMErrDsNotify
{-# LINE 316 "Sound/MikMod/Errors.hsc" #-}
  (55) -> MMErrDsEvent
{-# LINE 317 "Sound/MikMod/Errors.hsc" #-}
  (56) -> MMErrDsThread
{-# LINE 318 "Sound/MikMod/Errors.hsc" #-}
  (57) -> MMErrDsUpdate
{-# LINE 319 "Sound/MikMod/Errors.hsc" #-}
  (58) -> MMErrWinmmHandle
{-# LINE 320 "Sound/MikMod/Errors.hsc" #-}
  (59) -> MMErrWinmmAllocated
{-# LINE 321 "Sound/MikMod/Errors.hsc" #-}
  (60) -> MMErrWinmmDeviceid
{-# LINE 322 "Sound/MikMod/Errors.hsc" #-}
  (61) -> MMErrWinmmFormat
{-# LINE 323 "Sound/MikMod/Errors.hsc" #-}
  (62) -> MMErrWinmmUnknown
{-# LINE 324 "Sound/MikMod/Errors.hsc" #-}
  (63) -> MMErrMacSpeed
{-# LINE 325 "Sound/MikMod/Errors.hsc" #-}
  (64) -> MMErrMacStart
{-# LINE 326 "Sound/MikMod/Errors.hsc" #-}
  (65) -> MMErrOsxUnknownDevice
{-# LINE 327 "Sound/MikMod/Errors.hsc" #-}
  (66) -> MMErrOsxBadProperty
{-# LINE 328 "Sound/MikMod/Errors.hsc" #-}
  (67) -> MMErrOsxUnsupportedFormat
{-# LINE 329 "Sound/MikMod/Errors.hsc" #-}
  (68) -> MMErrOsxSetStereo
{-# LINE 330 "Sound/MikMod/Errors.hsc" #-}
  (69) -> MMErrOsxBufferAlloc
{-# LINE 331 "Sound/MikMod/Errors.hsc" #-}
  (70) -> MMErrOsxAddIoProc
{-# LINE 332 "Sound/MikMod/Errors.hsc" #-}
  (71) -> MMErrOsxDeviceStart
{-# LINE 333 "Sound/MikMod/Errors.hsc" #-}
  (72) -> MMErrOsxPthread
{-# LINE 334 "Sound/MikMod/Errors.hsc" #-}
  (73) -> MMErrDoswssStartdma
{-# LINE 335 "Sound/MikMod/Errors.hsc" #-}
  (74) -> MMErrDossbStartdma
{-# LINE 336 "Sound/MikMod/Errors.hsc" #-}
  (75) -> MMErrNoFloat32
{-# LINE 337 "Sound/MikMod/Errors.hsc" #-}
  (76) -> MMErrOpenalCreatectx
{-# LINE 338 "Sound/MikMod/Errors.hsc" #-}
  (77) -> MMErrOpenalCtxcurrent
{-# LINE 339 "Sound/MikMod/Errors.hsc" #-}
  (78) -> MMErrOpenalGenbuffers
{-# LINE 340 "Sound/MikMod/Errors.hsc" #-}
  (79) -> MMErrOpenalGensources
{-# LINE 341 "Sound/MikMod/Errors.hsc" #-}
  (80) -> MMErrOpenalSource
{-# LINE 342 "Sound/MikMod/Errors.hsc" #-}
  (81) -> MMErrOpenalQueuebuffers
{-# LINE 343 "Sound/MikMod/Errors.hsc" #-}
  (82) -> MMErrOpenalUnqueuebuffers
{-# LINE 344 "Sound/MikMod/Errors.hsc" #-}
  (83) -> MMErrOpenalBufferdata
{-# LINE 345 "Sound/MikMod/Errors.hsc" #-}
  (84) -> MMErrOpenalGetsource
{-# LINE 346 "Sound/MikMod/Errors.hsc" #-}
  (85) -> MMErrOpenalSourceplay
{-# LINE 347 "Sound/MikMod/Errors.hsc" #-}
  (86) -> MMErrOpenalSourcestop
{-# LINE 348 "Sound/MikMod/Errors.hsc" #-}
  (87) -> MMErrAlsaNoconfig
{-# LINE 349 "Sound/MikMod/Errors.hsc" #-}
  (88) -> MMErrAlsaSetparams
{-# LINE 350 "Sound/MikMod/Errors.hsc" #-}
  (89) -> MMErrAlsaSetformat
{-# LINE 351 "Sound/MikMod/Errors.hsc" #-}
  (90) -> MMErrAlsaSetrate
{-# LINE 352 "Sound/MikMod/Errors.hsc" #-}
  (91) -> MMErrAlsaSetchannels
{-# LINE 353 "Sound/MikMod/Errors.hsc" #-}
  (92) -> MMErrAlsaBuffersize
{-# LINE 354 "Sound/MikMod/Errors.hsc" #-}
  (93) -> MMErrAlsaPcmStart
{-# LINE 355 "Sound/MikMod/Errors.hsc" #-}
  (94) -> MMErrAlsaPcmWrite
{-# LINE 356 "Sound/MikMod/Errors.hsc" #-}
  (95) -> MMErrAlsaPcmRecover
{-# LINE 357 "Sound/MikMod/Errors.hsc" #-}
  (98) -> MMErrMax
{-# LINE 358 "Sound/MikMod/Errors.hsc" #-}
  x -> MMErrUnknown x