flaw-al/Flaw/Audio/OpenAL/FFI.hs
{-|
Module: Flaw.Audio.OpenAL.FFI
Description: FFI definitions for OpenAL.
License: MIT
-}
{-# LANGUAGE PatternSynonyms #-}
{-# OPTIONS_GHC -fno-warn-missing-pattern-synonym-signatures #-}
module Flaw.Audio.OpenAL.FFI
(
-- * Basic types
ALboolean
, ALchar
, ALbyte
, ALubyte
, ALshort
, ALushort
, ALint
, ALuint
, ALsizei
, ALenum
, ALfloat
, ALdouble
-- * ALC types
, ALCdevice
, ALCcontext
-- * ALC functions
, alcGetError
, alcOpenDevice
, alcCloseDevice
, alcCreateContext
, alcDestroyContext
, alcMakeContextCurrent
-- * AL functions
, alGetError
, alGenBuffers
, alDeleteBuffers
, alBufferData
, alGenSources
, alDeleteSources
, alSourcei
, alSource3f
, alGetSourcei
, alSourcePlay
, alSourcePause
, alSourceStop
, alSourceQueueBuffers
, alSourceUnqueueBuffers
-- * AL enums
, pattern AL_NO_ERROR
, pattern AL_INVALID_NAME
, pattern AL_INVALID_ENUM
, pattern AL_INVALID_VALUE
, pattern AL_INVALID_OPERATION
, pattern AL_OUT_OF_MEMORY
, pattern AL_FORMAT_MONO8
, pattern AL_FORMAT_MONO16
, pattern AL_FORMAT_STEREO8
, pattern AL_FORMAT_STEREO16
, pattern AL_FALSE
, pattern AL_TRUE
, pattern AL_POSITION
, pattern AL_DIRECTION
, pattern AL_VELOCITY
, pattern AL_LOOPING
, pattern AL_BUFFER
, pattern AL_SOURCE_STATE
, pattern AL_INITIAL
, pattern AL_PLAYING
, pattern AL_PAUSED
, pattern AL_STOPPED
, pattern AL_BUFFERS_PROCESSED
-- * ALC enums
, pattern ALC_NO_ERROR
, pattern ALC_INVALID_DEVICE
, pattern ALC_INVALID_CONTEXT
, pattern ALC_INVALID_ENUM
, pattern ALC_INVALID_VALUE
, pattern ALC_OUT_OF_MEMORY
) where
import Foreign.C.Types
import Foreign.Ptr
type ALboolean = CChar
type ALchar = CChar
type ALbyte = CSChar
type ALubyte = CUChar
type ALshort = CShort
type ALushort = CUShort
type ALint = CInt
type ALuint = CUInt
type ALsizei = CInt
type ALenum = CInt
type ALfloat = CFloat
type ALdouble = CDouble
data ALCdevice
data ALCcontext
foreign import ccall safe alcGetError :: Ptr ALCdevice -> IO ALenum
foreign import ccall safe alcOpenDevice :: Ptr ALchar -> IO (Ptr ALCdevice)
foreign import ccall safe alcCloseDevice :: Ptr ALCdevice -> IO ALboolean
foreign import ccall safe alcCreateContext :: Ptr ALCdevice -> Ptr ALint -> IO (Ptr ALCcontext)
foreign import ccall safe alcDestroyContext :: Ptr ALCcontext -> IO ()
foreign import ccall safe alcMakeContextCurrent :: Ptr ALCcontext -> IO ALboolean
foreign import ccall unsafe alGetError :: IO ALenum
foreign import ccall unsafe alGenBuffers :: ALsizei -> Ptr ALuint -> IO ()
foreign import ccall unsafe alDeleteBuffers :: ALsizei -> Ptr ALuint -> IO ()
foreign import ccall unsafe alBufferData :: ALuint -> ALenum -> Ptr () -> ALsizei -> ALsizei -> IO ()
foreign import ccall unsafe alGenSources :: ALsizei -> Ptr ALuint -> IO ()
foreign import ccall unsafe alDeleteSources :: ALsizei -> Ptr ALuint -> IO ()
foreign import ccall unsafe alSourcei :: ALuint -> ALenum -> ALint -> IO ()
foreign import ccall unsafe alSource3f :: ALuint -> ALenum -> ALfloat -> ALfloat -> ALfloat -> IO ()
foreign import ccall unsafe alGetSourcei :: ALuint -> ALenum -> Ptr ALint -> IO ()
foreign import ccall unsafe alSourcePlay :: ALuint -> IO ()
foreign import ccall unsafe alSourcePause :: ALuint -> IO ()
foreign import ccall unsafe alSourceStop :: ALuint -> IO ()
foreign import ccall unsafe alSourceQueueBuffers :: ALuint -> ALsizei -> Ptr ALuint -> IO ()
foreign import ccall unsafe alSourceUnqueueBuffers :: ALuint -> ALsizei -> Ptr ALuint -> IO ()
pattern AL_NO_ERROR = 0
pattern AL_INVALID_NAME = 0xA001
pattern AL_INVALID_ENUM = 0xA002
pattern AL_INVALID_VALUE = 0xA003
pattern AL_INVALID_OPERATION = 0xA004
pattern AL_OUT_OF_MEMORY = 0xA005
pattern AL_FORMAT_MONO8 = 0x1100
pattern AL_FORMAT_MONO16 = 0x1101
pattern AL_FORMAT_STEREO8 = 0x1102
pattern AL_FORMAT_STEREO16 = 0x1103
pattern AL_FALSE = 0
pattern AL_TRUE = 1
pattern AL_POSITION = 0x1004
pattern AL_DIRECTION = 0x1005
pattern AL_VELOCITY = 0x1006
pattern AL_LOOPING = 0x1007
pattern AL_BUFFER = 0x1009
pattern AL_SOURCE_STATE = 0x1010
pattern AL_INITIAL = 0x1011
pattern AL_PLAYING = 0x1012
pattern AL_PAUSED = 0x1013
pattern AL_STOPPED = 0x1014
pattern AL_BUFFERS_PROCESSED = 0x1016
pattern ALC_NO_ERROR = 0
pattern ALC_INVALID_DEVICE = 0xA001
pattern ALC_INVALID_CONTEXT = 0xA002
pattern ALC_INVALID_ENUM = 0xA003
pattern ALC_INVALID_VALUE = 0xA004
pattern ALC_OUT_OF_MEMORY = 0xA005