module System.Mesos.Raw.Parameters where import System.Mesos.Internal import System.Mesos.Raw.Parameter type ParametersPtr = Ptr Parameters newtype Parameters = Parameters [Parameter] deriving (Eq, Show) foreign import ccall unsafe "ext/types.h toParameters" c_toParameters :: Ptr ParameterPtr -> CInt -> IO ParametersPtr foreign import ccall unsafe "ext/types.h fromParameters" c_fromParameters :: ParametersPtr -> Ptr (Ptr ParameterPtr) -> Ptr CInt -> IO () foreign import ccall unsafe "ext/types.h destroyParameters" c_destroyParameters :: ParametersPtr -> IO () instance CPPValue Parameters where marshal (Parameters ps) = do pps <- mapM cppValue ps (pp, pl) <- arrayLen pps liftIO $ c_toParameters pp (fromIntegral pl) unmarshal p = do ppp <- alloc plp <- alloc liftIO $ c_fromParameters p ppp plp pp <- peek ppp pl <- peek plp ps <- peekArray' (pp, fromIntegral pl) fmap Parameters $ mapM unmarshal ps destroy = c_destroyParameters