{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) -} module GI.GIRepository.Unions.Argument ( -- * Exported types Argument(..) , newZeroArgument , noArgument , -- * Properties -- ** VBoolean argumentReadVBoolean , -- ** VDouble argumentReadVDouble , -- ** VFloat argumentReadVFloat , -- ** VInt argumentReadVInt , -- ** VInt16 argumentReadVInt16 , -- ** VInt32 argumentReadVInt32 , -- ** VInt64 argumentReadVInt64 , -- ** VInt8 argumentReadVInt8 , -- ** VLong argumentReadVLong , -- ** VPointer argumentReadVPointer , -- ** VShort argumentReadVShort , -- ** VSize argumentReadVSize , -- ** VSsize argumentReadVSsize , -- ** VString argumentReadVString , -- ** VUint argumentReadVUint , -- ** VUint16 argumentReadVUint16 , -- ** VUint32 argumentReadVUint32 , -- ** VUint64 argumentReadVUint64 , -- ** VUint8 argumentReadVUint8 , -- ** VUlong argumentReadVUlong , -- ** VUshort argumentReadVUshort , ) where import Prelude () import Data.GI.Base.ShortPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.GIRepository.Types import GI.GIRepository.Callbacks newtype Argument = Argument (ForeignPtr Argument) -- | Construct a `Argument` struct initialized to zero. newZeroArgument :: MonadIO m => m Argument newZeroArgument = liftIO $ callocBytes 8 >>= wrapPtr Argument noArgument :: Maybe Argument noArgument = Nothing argumentReadVBoolean :: Argument -> IO Bool argumentReadVBoolean s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CInt let val' = (/= 0) val return val' argumentReadVInt8 :: Argument -> IO Int8 argumentReadVInt8 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int8 return val argumentReadVUint8 :: Argument -> IO Word8 argumentReadVUint8 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word8 return val argumentReadVInt16 :: Argument -> IO Int16 argumentReadVInt16 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int16 return val argumentReadVUint16 :: Argument -> IO Word16 argumentReadVUint16 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word16 return val argumentReadVInt32 :: Argument -> IO Int32 argumentReadVInt32 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int32 return val argumentReadVUint32 :: Argument -> IO Word32 argumentReadVUint32 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word32 return val argumentReadVInt64 :: Argument -> IO Int64 argumentReadVInt64 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int64 return val argumentReadVUint64 :: Argument -> IO Word64 argumentReadVUint64 s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word64 return val argumentReadVFloat :: Argument -> IO Float argumentReadVFloat s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CFloat let val' = realToFrac val return val' argumentReadVDouble :: Argument -> IO Double argumentReadVDouble s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CDouble let val' = realToFrac val return val' argumentReadVShort :: Argument -> IO Int16 argumentReadVShort s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int16 return val argumentReadVUshort :: Argument -> IO Word16 argumentReadVUshort s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word16 return val argumentReadVInt :: Argument -> IO Int32 argumentReadVInt s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int32 return val argumentReadVUint :: Argument -> IO Word32 argumentReadVUint s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word32 return val argumentReadVLong :: Argument -> IO Int64 argumentReadVLong s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int64 return val argumentReadVUlong :: Argument -> IO Word64 argumentReadVUlong s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word64 return val argumentReadVSsize :: Argument -> IO Int64 argumentReadVSsize s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int64 return val argumentReadVSize :: Argument -> IO Word64 argumentReadVSize s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word64 return val argumentReadVString :: Argument -> IO T.Text argumentReadVString s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CString val' <- cstringToText val return val' argumentReadVPointer :: Argument -> IO (Ptr ()) argumentReadVPointer s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO (Ptr ()) return val type family ResolveArgumentMethod (t :: Symbol) (o :: *) :: * where ResolveArgumentMethod l o = MethodResolutionFailed l o instance (info ~ ResolveArgumentMethod t Argument, MethodInfo info Argument p) => IsLabelProxy t (Argument -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveArgumentMethod t Argument, MethodInfo info Argument p) => IsLabel t (Argument -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif