hs-mesos-0.20.0.0: src/System/Mesos/Raw/EnvironmentVariable.hs
module System.Mesos.Raw.EnvironmentVariable where
import System.Mesos.Internal
toEnvVar :: (ByteString, ByteString) -> EnvironmentVariable
toEnvVar (k, v) = EnvironmentVariable k v
fromEnvVar :: EnvironmentVariable -> (ByteString, ByteString)
fromEnvVar (EnvironmentVariable k v) = (k, v)
type EnvironmentVariablePtr = Ptr EnvironmentVariable
data EnvironmentVariable = EnvironmentVariable
{ environmentVariableKey :: !ByteString
, environmentVariableValue :: !ByteString
} deriving (Show, Eq)
foreign import ccall unsafe "ext/types.h toEnvironmentVariable" c_toEnvironmentVariable
:: Ptr CChar
-> CInt
-> Ptr CChar
-> CInt
-> IO EnvironmentVariablePtr
foreign import ccall unsafe "ext/types.h fromEnvironmentVariable" c_fromEnvironmentVariable
:: EnvironmentVariablePtr
-> Ptr (Ptr CChar)
-> Ptr CInt
-> Ptr (Ptr CChar)
-> Ptr CInt
-> IO ()
foreign import ccall unsafe "ext/types.h destroyEnvironmentVariable" c_destroyEnvironmentVariable
:: EnvironmentVariablePtr
-> IO ()
instance CPPValue EnvironmentVariable where
marshal e = do
(kp, kl) <- cstring $ environmentVariableKey e
(vp, vl) <- cstring $ environmentVariableValue e
liftIO $ c_toEnvironmentVariable kp (fromIntegral kl) vp (fromIntegral vl)
unmarshal e = do
kp@(kpp, klp) <- arrayPair
vp@(vpp, vlp) <- arrayPair
liftIO $ c_fromEnvironmentVariable e kpp klp vpp vlp
k <- peekCString kp
v <- peekCString vp
return $ EnvironmentVariable k v
destroy = c_destroyEnvironmentVariable