-- GENERATED by C->Haskell Compiler, version 0.25.2 Snowboundest, 31 Oct 2014 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}
module Data.Conduit.Audio.LAME.Binding where

import Foreign
import Foreign.C



newtype LAME = LAME (Ptr (LAME))
{-# LINE 8 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



{-# LINE 10 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


init :: IO ((LAME))
init =
  init'_ >>= \res ->
  let {res' = id res} in
  return (res')

{-# LINE 12 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}




getNumSamples :: (LAME) -> IO ((Int))
getNumSamples a1 =
  let {a1' = id a1} in 
  getNumSamples'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 16 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setNumSamples :: (LAME) -> (Int) -> IO ((Int))
setNumSamples a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setNumSamples'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 17 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getInSamplerate :: (LAME) -> IO ((Int))
getInSamplerate a1 =
  let {a1' = id a1} in 
  getInSamplerate'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 18 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setInSamplerate :: (LAME) -> (Int) -> IO ((Int))
setInSamplerate a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setInSamplerate'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 19 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getNumChannels :: (LAME) -> IO ((Int))
getNumChannels a1 =
  let {a1' = id a1} in 
  getNumChannels'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 20 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setNumChannels :: (LAME) -> (Int) -> IO ((Int))
setNumChannels a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setNumChannels'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 21 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getScale :: (LAME) -> IO ((Float))
getScale a1 =
  let {a1' = id a1} in 
  getScale'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 22 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setScale :: (LAME) -> (Float) -> IO ((Int))
setScale a1 a2 =
  let {a1' = id a1} in 
  let {a2' = realToFrac a2} in 
  setScale'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 23 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getScaleLeft :: (LAME) -> IO ((Float))
getScaleLeft a1 =
  let {a1' = id a1} in 
  getScaleLeft'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 24 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setScaleLeft :: (LAME) -> (Float) -> IO ((Int))
setScaleLeft a1 a2 =
  let {a1' = id a1} in 
  let {a2' = realToFrac a2} in 
  setScaleLeft'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 25 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getScaleRight :: (LAME) -> IO ((Float))
getScaleRight a1 =
  let {a1' = id a1} in 
  getScaleRight'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 26 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setScaleRight :: (LAME) -> (Float) -> IO ((Int))
setScaleRight a1 a2 =
  let {a1' = id a1} in 
  let {a2' = realToFrac a2} in 
  setScaleRight'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 27 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getOutSamplerate :: (LAME) -> IO ((Int))
getOutSamplerate a1 =
  let {a1' = id a1} in 
  getOutSamplerate'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 28 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setOutSamplerate :: (LAME) -> (Int) -> IO ((Int))
setOutSamplerate a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setOutSamplerate'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 29 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getAnalysis :: (LAME) -> IO ((Bool))
getAnalysis a1 =
  let {a1' = id a1} in 
  getAnalysis'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 30 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setAnalysis :: (LAME) -> (Bool) -> IO ((Int))
setAnalysis a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setAnalysis'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 31 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getBWriteVbrTag :: (LAME) -> IO ((Bool))
getBWriteVbrTag a1 =
  let {a1' = id a1} in 
  getBWriteVbrTag'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 32 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setBWriteVbrTag :: (LAME) -> (Bool) -> IO ((Int))
setBWriteVbrTag a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setBWriteVbrTag'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 33 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getDecodeOnly :: (LAME) -> IO ((Bool))
getDecodeOnly a1 =
  let {a1' = id a1} in 
  getDecodeOnly'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 34 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setDecodeOnly :: (LAME) -> (Bool) -> IO ((Int))
setDecodeOnly a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setDecodeOnly'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 35 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getQuality :: (LAME) -> IO ((Int))
getQuality a1 =
  let {a1' = id a1} in 
  getQuality'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 36 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setQuality :: (LAME) -> (Int) -> IO ((Int))
setQuality a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setQuality'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 37 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getMode :: (LAME) -> IO ((MPEGMode))
getMode a1 =
  let {a1' = id a1} in 
  getMode'_ a1' >>= \res ->
  let {res' = toCEnum res} in
  return (res')

{-# LINE 38 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setMode :: (LAME) -> (MPEGMode) -> IO ((Int))
setMode a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromCEnum a2} in 
  setMode'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 39 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


data MPEGMode = Stereo
              | JointStereo
              | DualChannel
              | Mono
              | NotSet
              | MaxIndicator
  deriving (Eq,Ord,Show,Read,Bounded)
instance Enum MPEGMode where
  succ Stereo = JointStereo
  succ JointStereo = DualChannel
  succ DualChannel = Mono
  succ Mono = NotSet
  succ NotSet = MaxIndicator
  succ MaxIndicator = error "MPEGMode.succ: MaxIndicator has no successor"

  pred JointStereo = Stereo
  pred DualChannel = JointStereo
  pred Mono = DualChannel
  pred NotSet = Mono
  pred MaxIndicator = NotSet
  pred Stereo = error "MPEGMode.pred: Stereo has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from MaxIndicator

  fromEnum Stereo = 0
  fromEnum JointStereo = 1
  fromEnum DualChannel = 2
  fromEnum Mono = 3
  fromEnum NotSet = 4
  fromEnum MaxIndicator = 5

  toEnum 0 = Stereo
  toEnum 1 = JointStereo
  toEnum 2 = DualChannel
  toEnum 3 = Mono
  toEnum 4 = NotSet
  toEnum 5 = MaxIndicator
  toEnum unmatched = error ("MPEGMode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 42 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


fromCEnum :: (Enum a) => a -> CInt
fromCEnum = fromIntegral . fromEnum

toCEnum :: (Enum a) => CInt -> a
toCEnum = toEnum . fromIntegral

getForceMs :: (LAME) -> IO ((Bool))
getForceMs a1 =
  let {a1' = id a1} in 
  getForceMs'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 50 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setForceMs :: (LAME) -> (Bool) -> IO ((Int))
setForceMs a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setForceMs'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 51 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getFreeFormat :: (LAME) -> IO ((Bool))
getFreeFormat a1 =
  let {a1' = id a1} in 
  getFreeFormat'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 52 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setFreeFormat :: (LAME) -> (Bool) -> IO ((Int))
setFreeFormat a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setFreeFormat'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 53 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getFindReplayGain :: (LAME) -> IO ((Bool))
getFindReplayGain a1 =
  let {a1' = id a1} in 
  getFindReplayGain'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 54 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setFindReplayGain :: (LAME) -> (Bool) -> IO ((Int))
setFindReplayGain a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setFindReplayGain'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 55 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getDecodeOnTheFly :: (LAME) -> IO ((Bool))
getDecodeOnTheFly a1 =
  let {a1' = id a1} in 
  getDecodeOnTheFly'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 56 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setDecodeOnTheFly :: (LAME) -> (Bool) -> IO ((Int))
setDecodeOnTheFly a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setDecodeOnTheFly'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 57 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getNogapTotal :: (LAME) -> IO ((Int))
getNogapTotal a1 =
  let {a1' = id a1} in 
  getNogapTotal'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 58 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setNogapTotal :: (LAME) -> (Int) -> IO ((Int))
setNogapTotal a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setNogapTotal'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 59 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getNogapCurrentindex :: (LAME) -> IO ((Int))
getNogapCurrentindex a1 =
  let {a1' = id a1} in 
  getNogapCurrentindex'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 60 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setNogapCurrentindex :: (LAME) -> (Int) -> IO ((Int))
setNogapCurrentindex a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setNogapCurrentindex'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 61 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


-- TODO: lame_set_errorf, lame_set_debugf, lame_set_msgf

getBrate :: (LAME) -> IO ((Int))
getBrate a1 =
  let {a1' = id a1} in 
  getBrate'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 65 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setBrate :: (LAME) -> (Int) -> IO ((Int))
setBrate a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setBrate'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 66 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getCompressionRatio :: (LAME) -> IO ((Float))
getCompressionRatio a1 =
  let {a1' = id a1} in 
  getCompressionRatio'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 67 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setCompressionRatio :: (LAME) -> (Float) -> IO ((Int))
setCompressionRatio a1 a2 =
  let {a1' = id a1} in 
  let {a2' = realToFrac a2} in 
  setCompressionRatio'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 68 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


setPreset :: (LAME) -> (Int) -> IO ((Int))
setPreset a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setPreset'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 70 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setAsmOptimizations :: (LAME) -> (Int) -> (Int) -> IO ((Int))
setAsmOptimizations a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  setAsmOptimizations'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 71 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getCopyright :: (LAME) -> IO ((Bool))
getCopyright a1 =
  let {a1' = id a1} in 
  getCopyright'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 73 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setCopyright :: (LAME) -> (Bool) -> IO ((Int))
setCopyright a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setCopyright'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 74 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getOriginal :: (LAME) -> IO ((Bool))
getOriginal a1 =
  let {a1' = id a1} in 
  getOriginal'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 75 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setOriginal :: (LAME) -> (Bool) -> IO ((Int))
setOriginal a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setOriginal'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 76 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getErrorProtection :: (LAME) -> IO ((Bool))
getErrorProtection a1 =
  let {a1' = id a1} in 
  getErrorProtection'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 77 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setErrorProtection :: (LAME) -> (Bool) -> IO ((Int))
setErrorProtection a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setErrorProtection'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 78 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getExtension :: (LAME) -> IO ((Bool))
getExtension a1 =
  let {a1' = id a1} in 
  getExtension'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 79 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setExtension :: (LAME) -> (Bool) -> IO ((Int))
setExtension a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setExtension'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 80 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getStrictISO :: (LAME) -> IO ((Bool))
getStrictISO a1 =
  let {a1' = id a1} in 
  getStrictISO'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 81 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setStrictISO :: (LAME) -> (Bool) -> IO ((Int))
setStrictISO a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setStrictISO'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 82 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


-- TODO: quantization/noise shaping section

getVBR :: (LAME) -> IO ((VBRMode))
getVBR a1 =
  let {a1' = id a1} in 
  getVBR'_ a1' >>= \res ->
  let {res' = toCEnum res} in
  return (res')

{-# LINE 86 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBR :: (LAME) -> (VBRMode) -> IO ((Int))
setVBR a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromCEnum a2} in 
  setVBR'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 87 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


data VBRMode = VbrOff
             | VbrMt
             | VbrRh
             | VbrAbr
             | VbrMtrh
             | VbrDefault
             | VbrMaxIndicator
  deriving (Eq,Ord,Show,Read,Bounded)
instance Enum VBRMode where
  succ VbrOff = VbrMt
  succ VbrMt = VbrRh
  succ VbrRh = VbrAbr
  succ VbrAbr = VbrMtrh
  succ VbrMtrh = VbrMaxIndicator
  succ VbrDefault = VbrMaxIndicator
  succ VbrMaxIndicator = error "VBRMode.succ: VbrMaxIndicator has no successor"

  pred VbrMt = VbrOff
  pred VbrRh = VbrMt
  pred VbrAbr = VbrRh
  pred VbrMtrh = VbrAbr
  pred VbrDefault = VbrAbr
  pred VbrMaxIndicator = VbrMtrh
  pred VbrOff = error "VBRMode.pred: VbrOff has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from VbrMaxIndicator

  fromEnum VbrOff = 0
  fromEnum VbrMt = 1
  fromEnum VbrRh = 2
  fromEnum VbrAbr = 3
  fromEnum VbrMtrh = 4
  fromEnum VbrDefault = 4
  fromEnum VbrMaxIndicator = 5

  toEnum 0 = VbrOff
  toEnum 1 = VbrMt
  toEnum 2 = VbrRh
  toEnum 3 = VbrAbr
  toEnum 4 = VbrMtrh
  toEnum 5 = VbrMaxIndicator
  toEnum unmatched = error ("VBRMode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 90 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getVBRQ :: (LAME) -> IO ((Int))
getVBRQ a1 =
  let {a1' = id a1} in 
  getVBRQ'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 92 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRQ :: (LAME) -> (Int) -> IO ((Int))
setVBRQ a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setVBRQ'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 93 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getVBRQuality :: (LAME) -> IO ((Float))
getVBRQuality a1 =
  let {a1' = id a1} in 
  getVBRQuality'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 94 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRQuality :: (LAME) -> (Float) -> IO ((Int))
setVBRQuality a1 a2 =
  let {a1' = id a1} in 
  let {a2' = realToFrac a2} in 
  setVBRQuality'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 95 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getVBRMeanBitrateKbps :: (LAME) -> IO ((Int))
getVBRMeanBitrateKbps a1 =
  let {a1' = id a1} in 
  getVBRMeanBitrateKbps'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 97 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRMeanBitrateKbps :: (LAME) -> (Int) -> IO ((Int))
setVBRMeanBitrateKbps a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setVBRMeanBitrateKbps'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 98 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getVBRMinBitrateKbps :: (LAME) -> IO ((Int))
getVBRMinBitrateKbps a1 =
  let {a1' = id a1} in 
  getVBRMinBitrateKbps'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 99 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRMinBitrateKbps :: (LAME) -> (Int) -> IO ((Int))
setVBRMinBitrateKbps a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setVBRMinBitrateKbps'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 100 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getVBRMaxBitrateKbps :: (LAME) -> IO ((Int))
getVBRMaxBitrateKbps a1 =
  let {a1' = id a1} in 
  getVBRMaxBitrateKbps'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 101 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRMaxBitrateKbps :: (LAME) -> (Int) -> IO ((Int))
setVBRMaxBitrateKbps a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setVBRMaxBitrateKbps'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 102 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getVBRHardMin :: (LAME) -> IO ((Bool))
getVBRHardMin a1 =
  let {a1' = id a1} in 
  getVBRHardMin'_ a1' >>= \res ->
  let {res' = toBool res} in
  return (res')

{-# LINE 104 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setVBRHardMin :: (LAME) -> (Bool) -> IO ((Int))
setVBRHardMin a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromBool a2} in 
  setVBRHardMin'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 105 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getLowpassfreq :: (LAME) -> IO ((Int))
getLowpassfreq a1 =
  let {a1' = id a1} in 
  getLowpassfreq'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 107 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setLowpassfreq :: (LAME) -> (Int) -> IO ((Int))
setLowpassfreq a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setLowpassfreq'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 108 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getLowpasswidth :: (LAME) -> IO ((Int))
getLowpasswidth a1 =
  let {a1' = id a1} in 
  getLowpasswidth'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 109 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setLowpasswidth :: (LAME) -> (Int) -> IO ((Int))
setLowpasswidth a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setLowpasswidth'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 110 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getHighpassfreq :: (LAME) -> IO ((Int))
getHighpassfreq a1 =
  let {a1' = id a1} in 
  getHighpassfreq'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 111 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setHighpassfreq :: (LAME) -> (Int) -> IO ((Int))
setHighpassfreq a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setHighpassfreq'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 112 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getHighpasswidth :: (LAME) -> IO ((Int))
getHighpasswidth a1 =
  let {a1' = id a1} in 
  getHighpasswidth'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 113 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

setHighpasswidth :: (LAME) -> (Int) -> IO ((Int))
setHighpasswidth a1 a2 =
  let {a1' = id a1} in 
  let {a2' = fromIntegral a2} in 
  setHighpasswidth'_ a1' a2' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 114 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


-- TODO: psycho acoustics section

getVersion :: (LAME) -> IO ((Int))
getVersion a1 =
  let {a1' = id a1} in 
  getVersion'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 118 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getEncoderDelay :: (LAME) -> IO ((Int))
getEncoderDelay a1 =
  let {a1' = id a1} in 
  getEncoderDelay'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 119 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getEncoderPadding :: (LAME) -> IO ((Int))
getEncoderPadding a1 =
  let {a1' = id a1} in 
  getEncoderPadding'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 120 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getFramesize :: (LAME) -> IO ((Int))
getFramesize a1 =
  let {a1' = id a1} in 
  getFramesize'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 121 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getMfSamplesToEncode :: (LAME) -> IO ((Int))
getMfSamplesToEncode a1 =
  let {a1' = id a1} in 
  getMfSamplesToEncode'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 122 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getSizeMp3buffer :: (LAME) -> IO ((Int))
getSizeMp3buffer a1 =
  let {a1' = id a1} in 
  getSizeMp3buffer'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 123 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getFrameNum :: (LAME) -> IO ((Int))
getFrameNum a1 =
  let {a1' = id a1} in 
  getFrameNum'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 124 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getTotalframes :: (LAME) -> IO ((Int))
getTotalframes a1 =
  let {a1' = id a1} in 
  getTotalframes'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 125 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getRadioGain :: (LAME) -> IO ((Int))
getRadioGain a1 =
  let {a1' = id a1} in 
  getRadioGain'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 126 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getAudiophileGain :: (LAME) -> IO ((Int))
getAudiophileGain a1 =
  let {a1' = id a1} in 
  getAudiophileGain'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 127 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getPeakSample :: (LAME) -> IO ((Float))
getPeakSample a1 =
  let {a1' = id a1} in 
  getPeakSample'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 128 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getNoclipGainChange :: (LAME) -> IO ((Int))
getNoclipGainChange a1 =
  let {a1' = id a1} in 
  getNoclipGainChange'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 129 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

getNoclipScale :: (LAME) -> IO ((Float))
getNoclipScale a1 =
  let {a1' = id a1} in 
  getNoclipScale'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')

{-# LINE 130 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


initParams :: (LAME) -> IO ((Int))
initParams a1 =
  let {a1' = id a1} in 
  initParams'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 132 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



getLameVersion :: IO ((String))
getLameVersion =
  getLameVersion'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 135 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getLameShortVersion :: IO ((String))
getLameShortVersion =
  getLameShortVersion'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 137 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getLameVeryShortVersion :: IO ((String))
getLameVeryShortVersion =
  getLameVeryShortVersion'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 139 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getPsyVersion :: IO ((String))
getPsyVersion =
  getPsyVersion'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 141 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getLameUrl :: IO ((String))
getLameUrl =
  getLameUrl'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 143 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


getLameOsBitness :: IO ((String))
getLameOsBitness =
  getLameOsBitness'_ >>= \res ->
  peekCString res >>= \res' ->
  return (res')

{-# LINE 145 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



-- TODO: get_lame_version_numerical

printConfig :: (LAME) -> IO ()
printConfig a1 =
  let {a1' = id a1} in 
  printConfig'_ a1' >>
  return ()

{-# LINE 150 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}

printInternals :: (LAME) -> IO ()
printInternals a1 =
  let {a1' = id a1} in 
  printInternals'_ a1' >>
  return ()

{-# LINE 151 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}







encodeBuffer :: (LAME) -> (Ptr CShort) -- ^ PCM data for left channel
 -> (Ptr CShort) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBuffer a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBuffer'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 165 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferInterleaved :: (LAME) -> (Ptr CShort) -- ^ PCM data for left and right channel, interleaved
 -> (Int) -- ^ number of samples per channel, /not/ number of samples overall
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferInterleaved a1 a2 a3 a4 a5 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = id a4} in 
  let {a5' = fromIntegral a5} in 
  encodeBufferInterleaved'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 174 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferFloat :: (LAME) -> (Ptr CFloat) -- ^ PCM data for left channel
 -> (Ptr CFloat) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferFloat a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferFloat'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 184 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferIeeeFloat :: (LAME) -> (Ptr CFloat) -- ^ PCM data for left channel
 -> (Ptr CFloat) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferIeeeFloat a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferIeeeFloat'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 194 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferInterleavedIeeeFloat :: (LAME) -> (Ptr CFloat) -- ^ PCM data for left and right channel, interleaved
 -> (Int) -- ^ number of samples per channel, /not/ number of samples overall
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferInterleavedIeeeFloat a1 a2 a3 a4 a5 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = id a4} in 
  let {a5' = fromIntegral a5} in 
  encodeBufferInterleavedIeeeFloat'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 203 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferIeeeDouble :: (LAME) -> (Ptr CDouble) -- ^ PCM data for left channel
 -> (Ptr CDouble) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferIeeeDouble a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferIeeeDouble'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 213 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferInterleavedIeeeDouble :: (LAME) -> (Ptr CDouble) -- ^ PCM data for left and right channel, interleaved
 -> (Int) -- ^ number of samples per channel, /not/ number of samples overall
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferInterleavedIeeeDouble a1 a2 a3 a4 a5 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  let {a4' = id a4} in 
  let {a5' = fromIntegral a5} in 
  encodeBufferInterleavedIeeeDouble'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 222 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferLong :: (LAME) -> (Ptr CLong) -- ^ PCM data for left channel
 -> (Ptr CLong) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferLong a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferLong'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 232 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferLong2 :: (LAME) -> (Ptr CLong) -- ^ PCM data for left channel
 -> (Ptr CLong) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferLong2 a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferLong2'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 242 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeBufferInt :: (LAME) -> (Ptr CInt) -- ^ PCM data for left channel
 -> (Ptr CInt) -- ^ PCM data for right channel
 -> (Int) -- ^ number of samples per channel
 -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- ^ number of valid octets in this stream
 -> IO ((Int))
encodeBufferInt a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  let {a4' = fromIntegral a4} in 
  let {a5' = id a5} in 
  let {a6' = fromIntegral a6} in 
  encodeBufferInt'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 252 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}



encodeFlush :: (LAME) -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- number of valid octets in this stream
 -> IO ((Int))
encodeFlush a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  encodeFlush'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 259 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


encodeFlushNogap :: (LAME) -> (Ptr CUChar) -- ^ pointer to encoded MP3 stream
 -> (Int) -- number of valid octets in this stream
 -> IO ((Int))
encodeFlushNogap a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  encodeFlushNogap'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 265 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


initBitstream :: (LAME) -> IO ((Int))
initBitstream a1 =
  let {a1' = id a1} in 
  initBitstream'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 269 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


-- TODO: some simple statistics

getLametagFrame :: (LAME) -> (Ptr CUChar) -> (CSize) -> IO ((CSize))
getLametagFrame a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = fromIntegral a3} in 
  getLametagFrame'_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 277 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


close :: (LAME) -> IO ((Int))
close a1 =
  let {a1' = id a1} in 
  close'_ a1' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 279 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


data ErrorCode = FrontendFiletoolarge
               | FrontendWriteerror
               | FrontendReaderror
               | Internalerror
               | Badsampfreq
               | Badbitrate
               | Nomem
               | Genericerror
               | Okay
               | Noerror
  deriving (Eq,Ord,Show,Read,Bounded)
instance Enum ErrorCode where
  succ FrontendFiletoolarge = FrontendWriteerror
  succ FrontendWriteerror = FrontendReaderror
  succ FrontendReaderror = Internalerror
  succ Internalerror = Badsampfreq
  succ Badsampfreq = Badbitrate
  succ Badbitrate = Nomem
  succ Nomem = Genericerror
  succ Genericerror = Okay
  succ Okay = error "ErrorCode.succ: Okay has no successor"
  succ Noerror = error "ErrorCode.succ: Noerror has no successor"

  pred FrontendWriteerror = FrontendFiletoolarge
  pred FrontendReaderror = FrontendWriteerror
  pred Internalerror = FrontendReaderror
  pred Badsampfreq = Internalerror
  pred Badbitrate = Badsampfreq
  pred Nomem = Badbitrate
  pred Genericerror = Nomem
  pred Okay = Genericerror
  pred Noerror = Genericerror
  pred FrontendFiletoolarge = error "ErrorCode.pred: FrontendFiletoolarge has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Noerror

  fromEnum FrontendFiletoolarge = (-82)
  fromEnum FrontendWriteerror = (-81)
  fromEnum FrontendReaderror = (-80)
  fromEnum Internalerror = (-13)
  fromEnum Badsampfreq = (-12)
  fromEnum Badbitrate = (-11)
  fromEnum Nomem = (-10)
  fromEnum Genericerror = (-1)
  fromEnum Okay = 0
  fromEnum Noerror = 0

  toEnum (-82) = FrontendFiletoolarge
  toEnum (-81) = FrontendWriteerror
  toEnum (-80) = FrontendReaderror
  toEnum (-13) = Internalerror
  toEnum (-12) = Badsampfreq
  toEnum (-11) = Badbitrate
  toEnum (-10) = Nomem
  toEnum (-1) = Genericerror
  toEnum 0 = Okay
  toEnum unmatched = error ("ErrorCode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 282 "src/Data/Conduit/Audio/LAME/Binding.chs" #-}


check :: IO Int -> IO ()
check x = x >>= \c -> case c of
  0 -> return ()
  _ -> error $ show (toEnum c :: ErrorCode)

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_init"
  init'_ :: (IO (LAME))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_num_samples"
  getNumSamples'_ :: ((LAME) -> (IO CULong))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_num_samples"
  setNumSamples'_ :: ((LAME) -> (CULong -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_in_samplerate"
  getInSamplerate'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_in_samplerate"
  setInSamplerate'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_num_channels"
  getNumChannels'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_num_channels"
  setNumChannels'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_scale"
  getScale'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_scale"
  setScale'_ :: ((LAME) -> (CFloat -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_scale_left"
  getScaleLeft'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_scale_left"
  setScaleLeft'_ :: ((LAME) -> (CFloat -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_scale_right"
  getScaleRight'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_scale_right"
  setScaleRight'_ :: ((LAME) -> (CFloat -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_out_samplerate"
  getOutSamplerate'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_out_samplerate"
  setOutSamplerate'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_analysis"
  getAnalysis'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_analysis"
  setAnalysis'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_bWriteVbrTag"
  getBWriteVbrTag'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_bWriteVbrTag"
  setBWriteVbrTag'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_decode_only"
  getDecodeOnly'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_decode_only"
  setDecodeOnly'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_quality"
  getQuality'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_quality"
  setQuality'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_mode"
  getMode'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_mode"
  setMode'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_force_ms"
  getForceMs'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_force_ms"
  setForceMs'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_free_format"
  getFreeFormat'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_free_format"
  setFreeFormat'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_findReplayGain"
  getFindReplayGain'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_findReplayGain"
  setFindReplayGain'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_decode_on_the_fly"
  getDecodeOnTheFly'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_decode_on_the_fly"
  setDecodeOnTheFly'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_nogap_total"
  getNogapTotal'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_nogap_total"
  setNogapTotal'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_nogap_currentindex"
  getNogapCurrentindex'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_nogap_currentindex"
  setNogapCurrentindex'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_brate"
  getBrate'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_brate"
  setBrate'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_compression_ratio"
  getCompressionRatio'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_compression_ratio"
  setCompressionRatio'_ :: ((LAME) -> (CFloat -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_preset"
  setPreset'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_asm_optimizations"
  setAsmOptimizations'_ :: ((LAME) -> (CInt -> (CInt -> (IO CInt))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_copyright"
  getCopyright'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_copyright"
  setCopyright'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_original"
  getOriginal'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_original"
  setOriginal'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_error_protection"
  getErrorProtection'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_error_protection"
  setErrorProtection'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_extension"
  getExtension'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_extension"
  setExtension'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_strict_ISO"
  getStrictISO'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_strict_ISO"
  setStrictISO'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR"
  getVBR'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR"
  setVBR'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_q"
  getVBRQ'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_q"
  setVBRQ'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_quality"
  getVBRQuality'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_quality"
  setVBRQuality'_ :: ((LAME) -> (CFloat -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_mean_bitrate_kbps"
  getVBRMeanBitrateKbps'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_mean_bitrate_kbps"
  setVBRMeanBitrateKbps'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_min_bitrate_kbps"
  getVBRMinBitrateKbps'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_min_bitrate_kbps"
  setVBRMinBitrateKbps'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_max_bitrate_kbps"
  getVBRMaxBitrateKbps'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_max_bitrate_kbps"
  setVBRMaxBitrateKbps'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_VBR_hard_min"
  getVBRHardMin'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_VBR_hard_min"
  setVBRHardMin'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_lowpassfreq"
  getLowpassfreq'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_lowpassfreq"
  setLowpassfreq'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_lowpasswidth"
  getLowpasswidth'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_lowpasswidth"
  setLowpasswidth'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_highpassfreq"
  getHighpassfreq'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_highpassfreq"
  setHighpassfreq'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_highpasswidth"
  getHighpasswidth'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_set_highpasswidth"
  setHighpasswidth'_ :: ((LAME) -> (CInt -> (IO CInt)))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_version"
  getVersion'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_encoder_delay"
  getEncoderDelay'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_encoder_padding"
  getEncoderPadding'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_framesize"
  getFramesize'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_mf_samples_to_encode"
  getMfSamplesToEncode'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_size_mp3buffer"
  getSizeMp3buffer'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_frameNum"
  getFrameNum'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_totalframes"
  getTotalframes'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_RadioGain"
  getRadioGain'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_AudiophileGain"
  getAudiophileGain'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_PeakSample"
  getPeakSample'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_noclipGainChange"
  getNoclipGainChange'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_noclipScale"
  getNoclipScale'_ :: ((LAME) -> (IO CFloat))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_init_params"
  initParams'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_lame_version"
  getLameVersion'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_lame_short_version"
  getLameShortVersion'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_lame_very_short_version"
  getLameVeryShortVersion'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_psy_version"
  getPsyVersion'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_lame_url"
  getLameUrl'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h get_lame_os_bitness"
  getLameOsBitness'_ :: (IO (Ptr CChar))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_print_config"
  printConfig'_ :: ((LAME) -> (IO ()))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_print_internals"
  printInternals'_ :: ((LAME) -> (IO ()))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer"
  encodeBuffer'_ :: ((LAME) -> ((Ptr CShort) -> ((Ptr CShort) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_interleaved"
  encodeBufferInterleaved'_ :: ((LAME) -> ((Ptr CShort) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_float"
  encodeBufferFloat'_ :: ((LAME) -> ((Ptr CFloat) -> ((Ptr CFloat) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_ieee_float"
  encodeBufferIeeeFloat'_ :: ((LAME) -> ((Ptr CFloat) -> ((Ptr CFloat) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_interleaved_ieee_float"
  encodeBufferInterleavedIeeeFloat'_ :: ((LAME) -> ((Ptr CFloat) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_ieee_double"
  encodeBufferIeeeDouble'_ :: ((LAME) -> ((Ptr CDouble) -> ((Ptr CDouble) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_interleaved_ieee_double"
  encodeBufferInterleavedIeeeDouble'_ :: ((LAME) -> ((Ptr CDouble) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_long"
  encodeBufferLong'_ :: ((LAME) -> ((Ptr CLong) -> ((Ptr CLong) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_long2"
  encodeBufferLong2'_ :: ((LAME) -> ((Ptr CLong) -> ((Ptr CLong) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_buffer_int"
  encodeBufferInt'_ :: ((LAME) -> ((Ptr CInt) -> ((Ptr CInt) -> (CInt -> ((Ptr CUChar) -> (CInt -> (IO CInt)))))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_flush"
  encodeFlush'_ :: ((LAME) -> ((Ptr CUChar) -> (CInt -> (IO CInt))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_encode_flush_nogap"
  encodeFlushNogap'_ :: ((LAME) -> ((Ptr CUChar) -> (CInt -> (IO CInt))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_init_bitstream"
  initBitstream'_ :: ((LAME) -> (IO CInt))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_get_lametag_frame"
  getLametagFrame'_ :: ((LAME) -> ((Ptr CUChar) -> (CULong -> (IO CULong))))

foreign import ccall safe "Data/Conduit/Audio/LAME/Binding.chs.h lame_close"
  close'_ :: ((LAME) -> (IO CInt))