skype4hs-0.0.0.0: src/Network/Skype/API/Carbon/CFDictionary.hsc
module Network.Skype.API.Carbon.CFDictionary where
#include "CoreFoundation/CFDictionary.h"
import Foreign
import Network.Skype.API.Carbon.CFBase
data CFDictionary key value
type CFDictionaryRef key value = Ptr (CFDictionary key value)
newtype CFDictionaryKeyCallBacks =
CFDictionaryKeyCallBacks (Ptr CFDictionaryKeyCallBacks)
newtype CFDictionaryValueCallBacks =
CFDictionaryValueCallBacks (Ptr CFDictionaryValueCallBacks)
newCFDictionary :: [(Ptr key, Ptr value)] -> IO (CFDictionaryRef key value)
newCFDictionary elements =
withArrayLen ks $ \len ks_p ->
withArray vs $ \vs_p ->
c_CFDictionaryCreate defaultAllocator
ks_p
vs_p
(fromIntegral len)
p_CFTypeDictionaryKeyCallBacks
p_CFTypeDictionaryValueCallBacks
where (ks, vs) = unzip elements
foreign import ccall unsafe "&kCFTypeDictionaryKeyCallBacks"
p_CFTypeDictionaryKeyCallBacks :: CFDictionaryKeyCallBacks
foreign import ccall unsafe "&kCFTypeDictionaryValueCallBacks"
p_CFTypeDictionaryValueCallBacks :: CFDictionaryValueCallBacks
foreign import ccall unsafe "CFDictionaryCreate"
c_CFDictionaryCreate :: CFAllocatorRef
-> Ptr (Ptr key)
-> Ptr (Ptr value)
-> CFIndex
-> CFDictionaryKeyCallBacks
-> CFDictionaryValueCallBacks
-> IO (CFDictionaryRef key value)
foreign import ccall unsafe "CFDictionaryGetValue"
c_CFDictionaryGetValue :: CFDictionaryRef key value
-> Ptr key
-> IO (Ptr value)