{-# LINE 1 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

{-# LINE 2 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

{-# LINE 3 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

-- | <http://libcddb.sourceforge.net/API/cddb__disc_8h.html>

module Bindings.Libcddb.CddbDisc where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 8 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
import Bindings.Libcddb.CddbTrack

c'FRAMES_PER_SECOND = 75
c'FRAMES_PER_SECOND :: (Num a) => a

{-# LINE 11 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

data C'cddb_disc_t = C'cddb_disc_t

{-# LINE 13 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

type C'cddb_cat_t = CUInt

{-# LINE 15 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
  
c'CDDB_CAT_DATA = 0
c'CDDB_CAT_DATA :: (Num a) => a

{-# LINE 17 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_FOLK = 1
c'CDDB_CAT_FOLK :: (Num a) => a

{-# LINE 18 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_JAZZ = 2
c'CDDB_CAT_JAZZ :: (Num a) => a

{-# LINE 19 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_MISC = 3
c'CDDB_CAT_MISC :: (Num a) => a

{-# LINE 20 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_ROCK = 4
c'CDDB_CAT_ROCK :: (Num a) => a

{-# LINE 21 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_COUNTRY = 5
c'CDDB_CAT_COUNTRY :: (Num a) => a

{-# LINE 22 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_BLUES = 6
c'CDDB_CAT_BLUES :: (Num a) => a

{-# LINE 23 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_NEWAGE = 7
c'CDDB_CAT_NEWAGE :: (Num a) => a

{-# LINE 24 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_REGGAE = 8
c'CDDB_CAT_REGGAE :: (Num a) => a

{-# LINE 25 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_CLASSICAL = 9
c'CDDB_CAT_CLASSICAL :: (Num a) => a

{-# LINE 26 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_SOUNDTRACK = 10
c'CDDB_CAT_SOUNDTRACK :: (Num a) => a

{-# LINE 27 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_INVALID = 11
c'CDDB_CAT_INVALID :: (Num a) => a

{-# LINE 28 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
c'CDDB_CAT_LAST = 12
c'CDDB_CAT_LAST :: (Num a) => a

{-# LINE 29 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

foreign import ccall "cddb_disc_new" c'cddb_disc_new
  :: IO (Ptr C'cddb_disc_t)
foreign import ccall "&cddb_disc_new" p'cddb_disc_new
  :: FunPtr (IO (Ptr C'cddb_disc_t))

{-# LINE 31 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_destroy" c'cddb_disc_destroy
  :: Ptr C'cddb_disc_t -> IO ()
foreign import ccall "&cddb_disc_destroy" p'cddb_disc_destroy
  :: FunPtr (Ptr C'cddb_disc_t -> IO ())

{-# LINE 32 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_clone" c'cddb_disc_clone
  :: Ptr C'cddb_disc_t -> IO (Ptr C'cddb_disc_t)
foreign import ccall "&cddb_disc_clone" p'cddb_disc_clone
  :: FunPtr (Ptr C'cddb_disc_t -> IO (Ptr C'cddb_disc_t))

{-# LINE 33 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_add_track" c'cddb_disc_add_track
  :: Ptr C'cddb_disc_t -> Ptr C'cddb_track_t -> IO ()
foreign import ccall "&cddb_disc_add_track" p'cddb_disc_add_track
  :: FunPtr (Ptr C'cddb_disc_t -> Ptr C'cddb_track_t -> IO ())

{-# LINE 35 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_track" c'cddb_disc_get_track
  :: Ptr C'cddb_disc_t -> CInt -> IO (Ptr C'cddb_track_t)
foreign import ccall "&cddb_disc_get_track" p'cddb_disc_get_track
  :: FunPtr (Ptr C'cddb_disc_t -> CInt -> IO (Ptr C'cddb_track_t))

{-# LINE 37 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_track_first" c'cddb_disc_get_track_first
  :: Ptr C'cddb_disc_t -> IO (Ptr C'cddb_track_t)
foreign import ccall "&cddb_disc_get_track_first" p'cddb_disc_get_track_first
  :: FunPtr (Ptr C'cddb_disc_t -> IO (Ptr C'cddb_track_t))

{-# LINE 39 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_track_next" c'cddb_disc_get_track_next
  :: Ptr C'cddb_disc_t -> IO (Ptr C'cddb_track_t)
foreign import ccall "&cddb_disc_get_track_next" p'cddb_disc_get_track_next
  :: FunPtr (Ptr C'cddb_disc_t -> IO (Ptr C'cddb_track_t))

{-# LINE 41 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_discid" c'cddb_disc_get_discid
  :: Ptr C'cddb_disc_t -> IO CUInt
foreign import ccall "&cddb_disc_get_discid" p'cddb_disc_get_discid
  :: FunPtr (Ptr C'cddb_disc_t -> IO CUInt)

{-# LINE 42 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_discid" c'cddb_disc_set_discid
  :: Ptr C'cddb_disc_t -> CUInt -> IO ()
foreign import ccall "&cddb_disc_set_discid" p'cddb_disc_set_discid
  :: FunPtr (Ptr C'cddb_disc_t -> CUInt -> IO ())

{-# LINE 43 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_category" c'cddb_disc_get_category
  :: Ptr C'cddb_disc_t -> IO C'cddb_cat_t
foreign import ccall "&cddb_disc_get_category" p'cddb_disc_get_category
  :: FunPtr (Ptr C'cddb_disc_t -> IO C'cddb_cat_t)

{-# LINE 44 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_category" c'cddb_disc_set_category
  :: Ptr C'cddb_disc_t -> C'cddb_cat_t -> IO ()
foreign import ccall "&cddb_disc_set_category" p'cddb_disc_set_category
  :: FunPtr (Ptr C'cddb_disc_t -> C'cddb_cat_t -> IO ())

{-# LINE 46 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_category_str" c'cddb_disc_get_category_str
  :: Ptr C'cddb_disc_t -> IO CString
foreign import ccall "&cddb_disc_get_category_str" p'cddb_disc_get_category_str
  :: FunPtr (Ptr C'cddb_disc_t -> IO CString)

{-# LINE 47 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_category_str" c'cddb_disc_set_category_str
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_set_category_str" p'cddb_disc_set_category_str
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 49 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_genre" c'cddb_disc_get_genre
  :: Ptr C'cddb_disc_t -> IO CString
foreign import ccall "&cddb_disc_get_genre" p'cddb_disc_get_genre
  :: FunPtr (Ptr C'cddb_disc_t -> IO CString)

{-# LINE 50 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_genre" c'cddb_disc_set_genre
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_set_genre" p'cddb_disc_set_genre
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 51 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_length" c'cddb_disc_get_length
  :: Ptr C'cddb_disc_t -> IO CUInt
foreign import ccall "&cddb_disc_get_length" p'cddb_disc_get_length
  :: FunPtr (Ptr C'cddb_disc_t -> IO CUInt)

{-# LINE 52 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_length" c'cddb_disc_set_length
  :: Ptr C'cddb_disc_t -> CUInt -> IO ()
foreign import ccall "&cddb_disc_set_length" p'cddb_disc_set_length
  :: FunPtr (Ptr C'cddb_disc_t -> CUInt -> IO ())

{-# LINE 53 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_year" c'cddb_disc_get_year
  :: Ptr C'cddb_disc_t -> IO CUInt
foreign import ccall "&cddb_disc_get_year" p'cddb_disc_get_year
  :: FunPtr (Ptr C'cddb_disc_t -> IO CUInt)

{-# LINE 54 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_year" c'cddb_disc_set_year
  :: Ptr C'cddb_disc_t -> CUInt -> IO ()
foreign import ccall "&cddb_disc_set_year" p'cddb_disc_set_year
  :: FunPtr (Ptr C'cddb_disc_t -> CUInt -> IO ())

{-# LINE 55 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_track_count" c'cddb_disc_get_track_count
  :: Ptr C'cddb_disc_t -> IO CInt
foreign import ccall "&cddb_disc_get_track_count" p'cddb_disc_get_track_count
  :: FunPtr (Ptr C'cddb_disc_t -> IO CInt)

{-# LINE 56 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_title" c'cddb_disc_get_title
  :: Ptr C'cddb_disc_t -> IO CString
foreign import ccall "&cddb_disc_get_title" p'cddb_disc_get_title
  :: FunPtr (Ptr C'cddb_disc_t -> IO CString)

{-# LINE 57 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_title" c'cddb_disc_set_title
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_set_title" p'cddb_disc_set_title
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 58 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_append_title" c'cddb_disc_append_title
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_append_title" p'cddb_disc_append_title
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 59 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_artist" c'cddb_disc_get_artist
  :: Ptr C'cddb_disc_t -> IO CString
foreign import ccall "&cddb_disc_get_artist" p'cddb_disc_get_artist
  :: FunPtr (Ptr C'cddb_disc_t -> IO CString)

{-# LINE 60 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_artist" c'cddb_disc_set_artist
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_set_artist" p'cddb_disc_set_artist
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 61 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_append_artist" c'cddb_disc_append_artist
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_append_artist" p'cddb_disc_append_artist
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 62 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_get_ext_data" c'cddb_disc_get_ext_data
  :: Ptr C'cddb_disc_t -> IO CString
foreign import ccall "&cddb_disc_get_ext_data" p'cddb_disc_get_ext_data
  :: FunPtr (Ptr C'cddb_disc_t -> IO CString)

{-# LINE 63 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_set_ext_data" c'cddb_disc_set_ext_data
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_set_ext_data" p'cddb_disc_set_ext_data
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 64 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_append_ext_data" c'cddb_disc_append_ext_data
  :: Ptr C'cddb_disc_t -> CString -> IO ()
foreign import ccall "&cddb_disc_append_ext_data" p'cddb_disc_append_ext_data
  :: FunPtr (Ptr C'cddb_disc_t -> CString -> IO ())

{-# LINE 65 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_copy" c'cddb_disc_copy
  :: Ptr C'cddb_disc_t -> Ptr C'cddb_disc_t -> IO ()
foreign import ccall "&cddb_disc_copy" p'cddb_disc_copy
  :: FunPtr (Ptr C'cddb_disc_t -> Ptr C'cddb_disc_t -> IO ())

{-# LINE 66 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_calc_discid" c'cddb_disc_calc_discid
  :: Ptr C'cddb_disc_t -> IO CInt
foreign import ccall "&cddb_disc_calc_discid" p'cddb_disc_calc_discid
  :: FunPtr (Ptr C'cddb_disc_t -> IO CInt)

{-# LINE 67 "src/Bindings/Libcddb/CddbDisc.hsc" #-}
foreign import ccall "cddb_disc_print" c'cddb_disc_print
  :: Ptr C'cddb_disc_t -> IO ()
foreign import ccall "&cddb_disc_print" p'cddb_disc_print
  :: FunPtr (Ptr C'cddb_disc_t -> IO ())

{-# LINE 68 "src/Bindings/Libcddb/CddbDisc.hsc" #-}

foreign import ccall "array_CDDB_CATEGORY" c'CDDB_CATEGORY
  :: Ptr (CString)

{-# LINE 70 "src/Bindings/Libcddb/CddbDisc.hsc" #-}