packages feed

alure-0.1: source/Sound/UI/ALURE/Internal.hs

{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE EmptyDataDecls #-}

module Sound.UI.ALURE.Internal
  (
    c_alureGetVersion,
    c_alureGetErrorString,
    c_alureGetDeviceNames,
    c_alureFreeDeviceNames,
    c_alureInitDevice,
    c_alureShutdownDevice,
    c_alureGetSampleFormat,
    c_alureSleep,

    c_alureCreateBufferFromFile,
    c_alureCreateBufferFromMemory,
    c_alureBufferDataFromFile,
    c_alureBufferDataFromMemory,

    AlureStreamStruct,
    c_alureCreateStreamFromFile,
    c_alureCreateStreamFromMemory,
    c_alureCreateStreamFromStaticMemory,
    c_alureBufferDataFromStream,
    c_alureRewindStream,
    c_alureDestroyStream,

    
    CALUInt,
    CALChar,
    CALBoolean,
    CALEnum,
    CALFloat,
    CALUByte,
    CALSizei,

    CALCBoolean,
    CALCSizei,
    CALCChar,
    CALCInt,

  ) where

import Foreign
import Foreign.C.Types


type CALUInt = CUInt
type CALChar = CChar
type CALBoolean = CChar
type CALEnum = CInt
type CALFloat = CFloat
type CALUByte = CChar
type CALSizei = CInt

type CALCBoolean = CChar
type CALCSizei = CInt
type CALCChar = CChar
type CALCInt = CInt


--------------------------------------------------------------------------------
--  Main and Miscellanious

foreign import ccall unsafe "alure.h alureGetVersion" 
    c_alureGetVersion :: Ptr CALUInt -> Ptr CALUInt -> IO ()

foreign import ccall unsafe "alure.h alureGetErrorString"
    c_alureGetErrorString :: IO (Ptr CALChar)

foreign import ccall unsafe "alure.h alureGetDeviceNames"
    c_alureGetDeviceNames :: CALCBoolean -> Ptr CALCSizei -> IO (Ptr (Ptr CALCChar))

foreign import ccall unsafe "alure.h alureFreeDeviceNames"
    c_alureFreeDeviceNames :: Ptr (Ptr CALCChar) -> IO ()

foreign import ccall unsafe "alure.h alureInitDevice" 
    c_alureInitDevice :: Ptr CALCChar -> Ptr CALCInt -> IO CALBoolean

foreign import ccall unsafe "alure.h alureShutdownDevice" 
    c_alureShutdownDevice :: IO CALBoolean

foreign import ccall unsafe "alure.h alureGetSampleFormat" 
    c_alureGetSampleFormat :: CALUInt -> CALUInt -> CALUInt -> IO CALEnum 

--foreign import ccall unsafe "alure.h alureInstallDecodeCallbacks"
--    c_alureInstallDecodeCallbacks :: CALInt -> 

foreign import ccall unsafe "alure.h alureSleep" 
    c_alureSleep :: CALFloat -> CFloat -> IO CALBoolean


--------------------------------------------------------------------------------
--  File Loading


foreign import ccall unsafe "alure.h alureCreateBufferFromFile" 
    c_alureCreateBufferFromFile :: Ptr CALChar -> IO CALUInt

foreign import ccall unsafe "alure.h alureCreateBufferFromMemory"
    c_alureCreateBufferFromMemory :: Ptr CALUByte -> CALSizei -> IO CALUInt

foreign import ccall unsafe "alure.h alureBufferDataFromFile"
    c_alureBufferDataFromFile :: Ptr CALChar -> CALUInt -> IO CALBoolean

foreign import ccall unsafe "alure.h alureBufferDataFromMemory"
    c_alureBufferDataFromMemory :: Ptr CALUByte -> CALSizei -> CALUInt -> IO CALBoolean



--------------------------------------------------------------------------------
--  Streaming

data AlureStreamStruct

foreign import ccall unsafe "alure.h alureCreateStreamFromFile"
    c_alureCreateStreamFromFile :: Ptr CALChar -> CALSizei -> CALSizei -> Ptr CALUInt -> IO (Ptr AlureStreamStruct)

foreign import ccall unsafe "alure.h alureCreateStreamFromMemory"
    c_alureCreateStreamFromMemory :: Ptr CALUByte -> CALUInt -> CALSizei -> CALSizei -> Ptr CALUInt -> IO (Ptr AlureStreamStruct)

foreign import ccall unsafe "alure.h alureCreateStreamFromStaticMemory"
    c_alureCreateStreamFromStaticMemory :: Ptr CALUByte -> CALUInt -> CALSizei -> CALSizei -> CALUInt -> IO (Ptr AlureStreamStruct)

--foreign import ccall unsafe "alure.h alureCreateStreamFromCallback"
--    c_alureCreateStreamFromCallback :: 

foreign import ccall unsafe "alure.h alureBufferDataFromStream"
    c_alureBufferDataFromStream :: Ptr AlureStreamStruct -> CALSizei -> CALUInt -> IO CALSizei

foreign import ccall unsafe "alure.h alureRewindStream"
    c_alureRewindStream :: Ptr AlureStreamStruct -> IO CALBoolean

foreign import ccall unsafe "alure.h alureDestroyStream"
    c_alureDestroyStream :: Ptr AlureStreamStruct -> CALSizei -> Ptr CALUInt -> CALBoolean