{-# LANGUAGE PatternSynonyms #-}
module Sound.OpenAL.FFI.ALC where
import Foreign (FunPtr, Ptr, nullPtr)
import Foreign.C.Types (CChar(..), CInt(..), CUInt(..))
import Foreign.C.String (CString)
import Sound.OpenAL.FFI.Utils (Dynamic)
newtype Context = Context (Ptr Context)
deriving (Context -> Context -> Bool
(Context -> Context -> Bool)
-> (Context -> Context -> Bool) -> Eq Context
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Context -> Context -> Bool
$c/= :: Context -> Context -> Bool
== :: Context -> Context -> Bool
$c== :: Context -> Context -> Bool
Eq, Eq Context
Eq Context
-> (Context -> Context -> Ordering)
-> (Context -> Context -> Bool)
-> (Context -> Context -> Bool)
-> (Context -> Context -> Bool)
-> (Context -> Context -> Bool)
-> (Context -> Context -> Context)
-> (Context -> Context -> Context)
-> Ord Context
Context -> Context -> Bool
Context -> Context -> Ordering
Context -> Context -> Context
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Context -> Context -> Context
$cmin :: Context -> Context -> Context
max :: Context -> Context -> Context
$cmax :: Context -> Context -> Context
>= :: Context -> Context -> Bool
$c>= :: Context -> Context -> Bool
> :: Context -> Context -> Bool
$c> :: Context -> Context -> Bool
<= :: Context -> Context -> Bool
$c<= :: Context -> Context -> Bool
< :: Context -> Context -> Bool
$c< :: Context -> Context -> Bool
compare :: Context -> Context -> Ordering
$ccompare :: Context -> Context -> Ordering
$cp1Ord :: Eq Context
Ord, Int -> Context -> ShowS
[Context] -> ShowS
Context -> String
(Int -> Context -> ShowS)
-> (Context -> String) -> ([Context] -> ShowS) -> Show Context
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Context] -> ShowS
$cshowList :: [Context] -> ShowS
show :: Context -> String
$cshow :: Context -> String
showsPrec :: Int -> Context -> ShowS
$cshowsPrec :: Int -> Context -> ShowS
Show)
foreign import ccall unsafe "alcCreateContext"
alcCreateContext :: Device -> Ptr CInt -> IO Context
foreign import ccall unsafe "alcDestroyContext"
alcDestroyContext :: Context -> IO ()
foreign import ccall unsafe "alcGetCurrentContext"
alcGetCurrentContext :: IO Context
foreign import ccall unsafe "alcMakeContextCurrent"
alcMakeContextCurrent :: Context -> IO CChar
foreign import ccall unsafe "alcSuspendContext"
alcSuspendContext :: Context -> IO ()
foreign import ccall unsafe "alcProcessContext"
alcProcessContext :: Context -> IO ()
foreign import ccall unsafe "alcGetContextsDevice"
alcGetContextsDevice :: Context -> IO Device
newtype Device = Device (Ptr Device)
deriving (Device -> Device -> Bool
(Device -> Device -> Bool)
-> (Device -> Device -> Bool) -> Eq Device
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Device -> Device -> Bool
$c/= :: Device -> Device -> Bool
== :: Device -> Device -> Bool
$c== :: Device -> Device -> Bool
Eq, Eq Device
Eq Device
-> (Device -> Device -> Ordering)
-> (Device -> Device -> Bool)
-> (Device -> Device -> Bool)
-> (Device -> Device -> Bool)
-> (Device -> Device -> Bool)
-> (Device -> Device -> Device)
-> (Device -> Device -> Device)
-> Ord Device
Device -> Device -> Bool
Device -> Device -> Ordering
Device -> Device -> Device
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Device -> Device -> Device
$cmin :: Device -> Device -> Device
max :: Device -> Device -> Device
$cmax :: Device -> Device -> Device
>= :: Device -> Device -> Bool
$c>= :: Device -> Device -> Bool
> :: Device -> Device -> Bool
$c> :: Device -> Device -> Bool
<= :: Device -> Device -> Bool
$c<= :: Device -> Device -> Bool
< :: Device -> Device -> Bool
$c< :: Device -> Device -> Bool
compare :: Device -> Device -> Ordering
$ccompare :: Device -> Device -> Ordering
$cp1Ord :: Eq Device
Ord, Int -> Device -> ShowS
[Device] -> ShowS
Device -> String
(Int -> Device -> ShowS)
-> (Device -> String) -> ([Device] -> ShowS) -> Show Device
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Device] -> ShowS
$cshowList :: [Device] -> ShowS
show :: Device -> String
$cshow :: Device -> String
showsPrec :: Int -> Device -> ShowS
$cshowsPrec :: Int -> Device -> ShowS
Show)
nullDevice :: Device
nullDevice :: Device
nullDevice = Ptr Device -> Device
Device Ptr Device
forall a. Ptr a
nullPtr
foreign import ccall unsafe "alcOpenDevice"
alcOpenDevice :: CString -> IO Device
foreign import ccall unsafe "alcCloseDevice"
alcCloseDevice :: Device -> IO CChar
foreign import ccall unsafe "alcGetError"
alcGetError :: Device -> IO CInt
pattern INVALID_DEVICE :: (Eq a, Num a) => a
pattern $bINVALID_DEVICE :: a
$mINVALID_DEVICE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_DEVICE = 0xA001
pattern INVALID_CONTEXT :: (Eq a, Num a) => a
pattern $bINVALID_CONTEXT :: a
$mINVALID_CONTEXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_CONTEXT = 0xA002
pattern INVALID_ENUM :: (Eq a, Num a) => a
pattern $bINVALID_ENUM :: a
$mINVALID_ENUM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_ENUM = 0xA003
pattern INVALID_VALUE :: (Eq a, Num a) => a
pattern $bINVALID_VALUE :: a
$mINVALID_VALUE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_VALUE = 0xA004
pattern INVALID_OPERATION :: (Eq a, Num a) => a
pattern $bINVALID_OPERATION :: a
$mINVALID_OPERATION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_OPERATION = 0xA006
pattern OUT_OF_MEMORY :: (Eq a, Num a) => a
pattern $bOUT_OF_MEMORY :: a
$mOUT_OF_MEMORY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
OUT_OF_MEMORY = 0xA005
foreign import ccall unsafe "alcGetProcAddress"
alcGetProcAddress :: Device -> CString -> IO (FunPtr a)
foreign import ccall unsafe "alcGetEnumValue"
alcGetEnumValue :: Device -> CString -> IO CInt
foreign import ccall unsafe "alcGetString"
alcGetString :: Device -> CInt -> IO CString
foreign import ccall unsafe "alcGetIntegerv"
alcGetIntegerv :: Device -> CInt -> CInt -> Ptr CInt -> IO ()
foreign import ccall unsafe "alcIsExtensionPresent"
alcIsExtensionPresent_ :: Device -> CString -> IO CChar
foreign import ccall unsafe "dynamic"
invokeCaptureOpenDevice :: Dynamic (CString -> CUInt -> CInt -> CInt -> IO Device)
foreign import ccall unsafe "dynamic"
invokeCaptureStartStop :: Dynamic (Device -> IO ())
foreign import ccall unsafe "dynamic"
invokeCaptureSamples :: Dynamic (Device -> Ptr a -> CInt -> IO ())
foreign import ccall unsafe "dynamic"
invokeCaptureCloseDevice :: Dynamic (Device -> IO CChar)
pattern FREQUENCY :: (Eq a, Num a) => a
pattern $bFREQUENCY :: a
$mFREQUENCY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FREQUENCY = 0x1007
pattern REFRESH :: (Eq a, Num a) => a
pattern $bREFRESH :: a
$mREFRESH :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
REFRESH = 0x1008
pattern SYNC :: (Eq a, Num a) => a
pattern $bSYNC :: a
$mSYNC :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SYNC = 0x1009
pattern MONO_SOURCES :: (Eq a, Num a) => a
pattern $bMONO_SOURCES :: a
$mMONO_SOURCES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MONO_SOURCES = 0x1010
pattern STEREO_SOURCES :: (Eq a, Num a) => a
pattern $bSTEREO_SOURCES :: a
$mSTEREO_SOURCES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
STEREO_SOURCES = 0x1011
pattern DEFAULT_DEVICE_SPECIFIER :: (Eq a, Num a) => a
pattern $bDEFAULT_DEVICE_SPECIFIER :: a
$mDEFAULT_DEVICE_SPECIFIER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DEFAULT_DEVICE_SPECIFIER = 0x1004
pattern DEVICE_SPECIFIER :: (Eq a, Num a) => a
pattern $bDEVICE_SPECIFIER :: a
$mDEVICE_SPECIFIER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DEVICE_SPECIFIER = 0x1005
pattern EXTENSIONS :: (Eq a, Num a) => a
pattern $bEXTENSIONS :: a
$mEXTENSIONS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
EXTENSIONS = 0x1006
pattern CAPTURE_DEFAULT_DEVICE_SPECIFIER :: (Eq a, Num a) => a
pattern $bCAPTURE_DEFAULT_DEVICE_SPECIFIER :: a
$mCAPTURE_DEFAULT_DEVICE_SPECIFIER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CAPTURE_DEFAULT_DEVICE_SPECIFIER = 0x0311
pattern CAPTURE_DEVICE_SPECIFIER :: (Eq a, Num a) => a
pattern $bCAPTURE_DEVICE_SPECIFIER :: a
$mCAPTURE_DEVICE_SPECIFIER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CAPTURE_DEVICE_SPECIFIER = 0x0310
pattern ATTRIBUTES_SIZE :: (Eq a, Num a) => a
pattern $bATTRIBUTES_SIZE :: a
$mATTRIBUTES_SIZE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ATTRIBUTES_SIZE = 0x1002
pattern ALL_ATTRIBUTES :: (Eq a, Num a) => a
pattern $bALL_ATTRIBUTES :: a
$mALL_ATTRIBUTES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ALL_ATTRIBUTES = 0x1003
pattern MAJOR_VERSION :: (Eq a, Num a) => a
pattern $bMAJOR_VERSION :: a
$mMAJOR_VERSION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MAJOR_VERSION = 0x1000
pattern MINOR_VERSION :: (Eq a, Num a) => a
pattern $bMINOR_VERSION :: a
$mMINOR_VERSION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MINOR_VERSION = 0x1001
pattern CAPTURE_SAMPLES :: (Eq a, Num a) => a
pattern $bCAPTURE_SAMPLES :: a
$mCAPTURE_SAMPLES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CAPTURE_SAMPLES = 0x0312