{-# language ForeignFunctionInterface, EmptyDataDecls #-}

module Sound.SFML.LowLevel where


import Foreign.Ptr
import Foreign.C.String


-- * SoundBuffer

data SoundBuffer

sfSoundBuffer_CreateFromFile :: FilePath -> IO (Ptr SoundBuffer)
sfSoundBuffer_CreateFromFile path = withCString path c__sfSoundBuffer_CreateFromFile

foreign import ccall "sfSoundBuffer_CreateFromFile" c__sfSoundBuffer_CreateFromFile ::
    CString -> IO (Ptr SoundBuffer)

foreign import ccall sfSoundBuffer_Destroy :: Ptr SoundBuffer -> IO ()


-- * Sound

data Sound

foreign import ccall sfSound_Create :: IO (Ptr Sound)

foreign import ccall sfSound_SetBuffer :: Ptr Sound -> Ptr SoundBuffer -> IO ()

foreign import ccall sfSound_Play :: Ptr Sound -> IO ()

foreign import ccall sfSound_Destroy :: Ptr Sound -> IO ()


-- * Music

data Music

sfMusic_CreateFromFile :: FilePath -> IO (Ptr Music)
sfMusic_CreateFromFile path = withCString path c__sfMusic_CreateFromFile

foreign import ccall "sfMusic_CreateFromFile" c__sfMusic_CreateFromFile :: CString -> IO (Ptr Music)

foreign import ccall sfMusic_Destroy :: Ptr Music -> IO ()

foreign import ccall sfMusic_Play :: Ptr Music -> IO ()

foreign import ccall sfMusic_Stop :: Ptr Music -> IO ()

foreign import ccall sfMusic_SetLoop :: Ptr Music -> Bool -> IO ()

foreign import ccall sfMusic_SetVolume :: Ptr Music -> Float -> IO ()

foreign import ccall sfMusic_GetDuration :: Ptr Music -> IO Float