module LDAP.Result (LDAPMessage, CLDAPMessage,
ldap_1result
) where
import LDAP.Utils
import LDAP.Types
import Foreign
data CLDAPMessage
type LDAPMessage = ForeignPtr CLDAPMessage
ldap_1result :: LDAP -> LDAPInt -> IO (LDAPMessage)
ldap_1result ld msgid =
withLDAPPtr ld (\cld ->
alloca (f cld)
)
where f cld (ptr::Ptr (Ptr CLDAPMessage)) =
do checkLEn1 "ldap_1result" ld $
ldap_result cld msgid 0 nullPtr ptr
fromldmptr "ldap_1result" (peek ptr)
fromldmptr :: String -> IO (Ptr CLDAPMessage) -> IO LDAPMessage
fromldmptr caller action =
do ptr <- action
if ptr == nullPtr
then fail (caller ++ ": got null LDAPMessage pointer")
else newForeignPtr ldap_msgfree_call ptr
foreign import ccall unsafe "ldap.h ldap_result"
ldap_result :: LDAPPtr -> LDAPInt -> LDAPInt -> Ptr () -> Ptr (Ptr CLDAPMessage) -> IO LDAPInt
foreign import ccall unsafe "ldap.h &ldap_msgfree"
ldap_msgfree_call :: FunPtr (Ptr CLDAPMessage -> IO ())