hs-mesos-0.20.0.0: src/System/Mesos/Raw/CommandUri.hs
module System.Mesos.Raw.CommandUri where
import System.Mesos.Internal
type CommandURIPtr = Ptr CommandURI
foreign import ccall unsafe "ext/types.h toCommandURI" c_toCommandURI
:: Ptr CChar
-> CInt
-> Ptr CBool
-> Ptr CBool
-> IO CommandURIPtr
foreign import ccall unsafe "ext/types.h fromCommandURI" c_fromCommandURI
:: CommandURIPtr
-> Ptr (Ptr CChar)
-> Ptr CInt
-> Ptr CBool
-> Ptr CBool
-> Ptr CBool
-> Ptr CBool
-> IO ()
foreign import ccall unsafe "ext/types.h destroyCommandURI" c_destroyCommandURI
:: CommandURIPtr
-> IO ()
instance CPPValue CommandURI where
marshal cu = do
(vp, vl) <- cstring $ commandURIValue cu
exec <- allocMaybe $ fmap toCBool $ commandURIExecutable cu
extract <- allocMaybe $ fmap toCBool $ commandURIExtract cu
liftIO $ c_toCommandURI vp (fromIntegral vl) exec extract
unmarshal cup = do
(uriPP, uriLenP) <- arrayPair
exeSetP <- alloc
poke exeSetP 0
exeP <- alloc
extractSetP <- alloc
poke extractSetP 0
extractP <- alloc
liftIO $ c_fromCommandURI cup uriPP uriLenP exeSetP exeP extractSetP extractP
uri <- peekCString (uriPP, uriLenP)
mset <- peekMaybePrim exeP exeSetP
mextract <- peekMaybePrim extractP extractSetP
return $ CommandURI uri (fmap fromCBool mset) (fmap fromCBool mextract)
destroy = c_destroyCommandURI
equalExceptDefaults (CommandURI uri ms mx) (CommandURI uri' ms' mx') = uri == uri' && ms == ms' && defEq True mx mx'