gi-girepository-0.1.46.15: GI/GIRepository/Unions/Argument.hs
{- |
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 ,
argumentVBoolean ,
argumentWriteVBoolean ,
-- ** VDouble
argumentReadVDouble ,
argumentVDouble ,
argumentWriteVDouble ,
-- ** VFloat
argumentReadVFloat ,
argumentVFloat ,
argumentWriteVFloat ,
-- ** VInt
argumentReadVInt ,
argumentVInt ,
argumentWriteVInt ,
-- ** VInt16
argumentReadVInt16 ,
argumentVInt16 ,
argumentWriteVInt16 ,
-- ** VInt32
argumentReadVInt32 ,
argumentVInt32 ,
argumentWriteVInt32 ,
-- ** VInt64
argumentReadVInt64 ,
argumentVInt64 ,
argumentWriteVInt64 ,
-- ** VInt8
argumentReadVInt8 ,
argumentVInt8 ,
argumentWriteVInt8 ,
-- ** VLong
argumentReadVLong ,
argumentVLong ,
argumentWriteVLong ,
-- ** VPointer
argumentClearVPointer ,
argumentReadVPointer ,
argumentVPointer ,
argumentWriteVPointer ,
-- ** VShort
argumentReadVShort ,
argumentVShort ,
argumentWriteVShort ,
-- ** VSize
argumentReadVSize ,
argumentVSize ,
argumentWriteVSize ,
-- ** VSsize
argumentReadVSsize ,
argumentVSsize ,
argumentWriteVSsize ,
-- ** VString
argumentClearVString ,
argumentReadVString ,
argumentVString ,
argumentWriteVString ,
-- ** VUint
argumentReadVUint ,
argumentVUint ,
argumentWriteVUint ,
-- ** VUint16
argumentReadVUint16 ,
argumentVUint16 ,
argumentWriteVUint16 ,
-- ** VUint32
argumentReadVUint32 ,
argumentVUint32 ,
argumentWriteVUint32 ,
-- ** VUint64
argumentReadVUint64 ,
argumentVUint64 ,
argumentWriteVUint64 ,
-- ** VUint8
argumentReadVUint8 ,
argumentVUint8 ,
argumentWriteVUint8 ,
-- ** VUlong
argumentReadVUlong ,
argumentVUlong ,
argumentWriteVUlong ,
-- ** VUshort
argumentReadVUshort ,
argumentVUshort ,
argumentWriteVUshort ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.Attributes as GI.Attributes
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)
instance WrappedPtr Argument where
wrappedPtrCalloc = callocBytes 8
wrappedPtrCopy = copyPtr 8
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `Argument` struct initialized to zero.
newZeroArgument :: MonadIO m => m Argument
newZeroArgument = liftIO $ wrappedPtrCalloc >>= wrapPtr Argument
instance tag ~ 'AttrSet => Constructible Argument tag where
new _ attrs = do
o <- newZeroArgument
GI.Attributes.set o attrs
return o
noArgument :: Maybe Argument
noArgument = Nothing
argumentReadVBoolean :: MonadIO m => Argument -> m Bool
argumentReadVBoolean s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CInt
let val' = (/= 0) val
return val'
argumentWriteVBoolean :: MonadIO m => Argument -> Bool -> m ()
argumentWriteVBoolean s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 0) (val' :: CInt)
data ArgumentVBooleanFieldInfo
instance AttrInfo ArgumentVBooleanFieldInfo where
type AttrAllowedOps ArgumentVBooleanFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVBooleanFieldInfo = (~) Bool
type AttrBaseTypeConstraint ArgumentVBooleanFieldInfo = (~) Argument
type AttrGetType ArgumentVBooleanFieldInfo = Bool
type AttrLabel ArgumentVBooleanFieldInfo = "v_boolean"
attrGet _ = argumentReadVBoolean
attrSet _ = argumentWriteVBoolean
attrConstruct = undefined
attrClear _ = undefined
argumentVBoolean :: AttrLabelProxy "vBoolean"
argumentVBoolean = AttrLabelProxy
argumentReadVInt8 :: MonadIO m => Argument -> m Int8
argumentReadVInt8 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int8
return val
argumentWriteVInt8 :: MonadIO m => Argument -> Int8 -> m ()
argumentWriteVInt8 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int8)
data ArgumentVInt8FieldInfo
instance AttrInfo ArgumentVInt8FieldInfo where
type AttrAllowedOps ArgumentVInt8FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVInt8FieldInfo = (~) Int8
type AttrBaseTypeConstraint ArgumentVInt8FieldInfo = (~) Argument
type AttrGetType ArgumentVInt8FieldInfo = Int8
type AttrLabel ArgumentVInt8FieldInfo = "v_int8"
attrGet _ = argumentReadVInt8
attrSet _ = argumentWriteVInt8
attrConstruct = undefined
attrClear _ = undefined
argumentVInt8 :: AttrLabelProxy "vInt8"
argumentVInt8 = AttrLabelProxy
argumentReadVUint8 :: MonadIO m => Argument -> m Word8
argumentReadVUint8 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word8
return val
argumentWriteVUint8 :: MonadIO m => Argument -> Word8 -> m ()
argumentWriteVUint8 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word8)
data ArgumentVUint8FieldInfo
instance AttrInfo ArgumentVUint8FieldInfo where
type AttrAllowedOps ArgumentVUint8FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUint8FieldInfo = (~) Word8
type AttrBaseTypeConstraint ArgumentVUint8FieldInfo = (~) Argument
type AttrGetType ArgumentVUint8FieldInfo = Word8
type AttrLabel ArgumentVUint8FieldInfo = "v_uint8"
attrGet _ = argumentReadVUint8
attrSet _ = argumentWriteVUint8
attrConstruct = undefined
attrClear _ = undefined
argumentVUint8 :: AttrLabelProxy "vUint8"
argumentVUint8 = AttrLabelProxy
argumentReadVInt16 :: MonadIO m => Argument -> m Int16
argumentReadVInt16 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int16
return val
argumentWriteVInt16 :: MonadIO m => Argument -> Int16 -> m ()
argumentWriteVInt16 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int16)
data ArgumentVInt16FieldInfo
instance AttrInfo ArgumentVInt16FieldInfo where
type AttrAllowedOps ArgumentVInt16FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVInt16FieldInfo = (~) Int16
type AttrBaseTypeConstraint ArgumentVInt16FieldInfo = (~) Argument
type AttrGetType ArgumentVInt16FieldInfo = Int16
type AttrLabel ArgumentVInt16FieldInfo = "v_int16"
attrGet _ = argumentReadVInt16
attrSet _ = argumentWriteVInt16
attrConstruct = undefined
attrClear _ = undefined
argumentVInt16 :: AttrLabelProxy "vInt16"
argumentVInt16 = AttrLabelProxy
argumentReadVUint16 :: MonadIO m => Argument -> m Word16
argumentReadVUint16 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word16
return val
argumentWriteVUint16 :: MonadIO m => Argument -> Word16 -> m ()
argumentWriteVUint16 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word16)
data ArgumentVUint16FieldInfo
instance AttrInfo ArgumentVUint16FieldInfo where
type AttrAllowedOps ArgumentVUint16FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUint16FieldInfo = (~) Word16
type AttrBaseTypeConstraint ArgumentVUint16FieldInfo = (~) Argument
type AttrGetType ArgumentVUint16FieldInfo = Word16
type AttrLabel ArgumentVUint16FieldInfo = "v_uint16"
attrGet _ = argumentReadVUint16
attrSet _ = argumentWriteVUint16
attrConstruct = undefined
attrClear _ = undefined
argumentVUint16 :: AttrLabelProxy "vUint16"
argumentVUint16 = AttrLabelProxy
argumentReadVInt32 :: MonadIO m => Argument -> m Int32
argumentReadVInt32 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int32
return val
argumentWriteVInt32 :: MonadIO m => Argument -> Int32 -> m ()
argumentWriteVInt32 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int32)
data ArgumentVInt32FieldInfo
instance AttrInfo ArgumentVInt32FieldInfo where
type AttrAllowedOps ArgumentVInt32FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVInt32FieldInfo = (~) Int32
type AttrBaseTypeConstraint ArgumentVInt32FieldInfo = (~) Argument
type AttrGetType ArgumentVInt32FieldInfo = Int32
type AttrLabel ArgumentVInt32FieldInfo = "v_int32"
attrGet _ = argumentReadVInt32
attrSet _ = argumentWriteVInt32
attrConstruct = undefined
attrClear _ = undefined
argumentVInt32 :: AttrLabelProxy "vInt32"
argumentVInt32 = AttrLabelProxy
argumentReadVUint32 :: MonadIO m => Argument -> m Word32
argumentReadVUint32 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word32
return val
argumentWriteVUint32 :: MonadIO m => Argument -> Word32 -> m ()
argumentWriteVUint32 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word32)
data ArgumentVUint32FieldInfo
instance AttrInfo ArgumentVUint32FieldInfo where
type AttrAllowedOps ArgumentVUint32FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUint32FieldInfo = (~) Word32
type AttrBaseTypeConstraint ArgumentVUint32FieldInfo = (~) Argument
type AttrGetType ArgumentVUint32FieldInfo = Word32
type AttrLabel ArgumentVUint32FieldInfo = "v_uint32"
attrGet _ = argumentReadVUint32
attrSet _ = argumentWriteVUint32
attrConstruct = undefined
attrClear _ = undefined
argumentVUint32 :: AttrLabelProxy "vUint32"
argumentVUint32 = AttrLabelProxy
argumentReadVInt64 :: MonadIO m => Argument -> m Int64
argumentReadVInt64 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int64
return val
argumentWriteVInt64 :: MonadIO m => Argument -> Int64 -> m ()
argumentWriteVInt64 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int64)
data ArgumentVInt64FieldInfo
instance AttrInfo ArgumentVInt64FieldInfo where
type AttrAllowedOps ArgumentVInt64FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVInt64FieldInfo = (~) Int64
type AttrBaseTypeConstraint ArgumentVInt64FieldInfo = (~) Argument
type AttrGetType ArgumentVInt64FieldInfo = Int64
type AttrLabel ArgumentVInt64FieldInfo = "v_int64"
attrGet _ = argumentReadVInt64
attrSet _ = argumentWriteVInt64
attrConstruct = undefined
attrClear _ = undefined
argumentVInt64 :: AttrLabelProxy "vInt64"
argumentVInt64 = AttrLabelProxy
argumentReadVUint64 :: MonadIO m => Argument -> m Word64
argumentReadVUint64 s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word64
return val
argumentWriteVUint64 :: MonadIO m => Argument -> Word64 -> m ()
argumentWriteVUint64 s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word64)
data ArgumentVUint64FieldInfo
instance AttrInfo ArgumentVUint64FieldInfo where
type AttrAllowedOps ArgumentVUint64FieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUint64FieldInfo = (~) Word64
type AttrBaseTypeConstraint ArgumentVUint64FieldInfo = (~) Argument
type AttrGetType ArgumentVUint64FieldInfo = Word64
type AttrLabel ArgumentVUint64FieldInfo = "v_uint64"
attrGet _ = argumentReadVUint64
attrSet _ = argumentWriteVUint64
attrConstruct = undefined
attrClear _ = undefined
argumentVUint64 :: AttrLabelProxy "vUint64"
argumentVUint64 = AttrLabelProxy
argumentReadVFloat :: MonadIO m => Argument -> m Float
argumentReadVFloat s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CFloat
let val' = realToFrac val
return val'
argumentWriteVFloat :: MonadIO m => Argument -> Float -> m ()
argumentWriteVFloat s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 0) (val' :: CFloat)
data ArgumentVFloatFieldInfo
instance AttrInfo ArgumentVFloatFieldInfo where
type AttrAllowedOps ArgumentVFloatFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVFloatFieldInfo = (~) Float
type AttrBaseTypeConstraint ArgumentVFloatFieldInfo = (~) Argument
type AttrGetType ArgumentVFloatFieldInfo = Float
type AttrLabel ArgumentVFloatFieldInfo = "v_float"
attrGet _ = argumentReadVFloat
attrSet _ = argumentWriteVFloat
attrConstruct = undefined
attrClear _ = undefined
argumentVFloat :: AttrLabelProxy "vFloat"
argumentVFloat = AttrLabelProxy
argumentReadVDouble :: MonadIO m => Argument -> m Double
argumentReadVDouble s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CDouble
let val' = realToFrac val
return val'
argumentWriteVDouble :: MonadIO m => Argument -> Double -> m ()
argumentWriteVDouble s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 0) (val' :: CDouble)
data ArgumentVDoubleFieldInfo
instance AttrInfo ArgumentVDoubleFieldInfo where
type AttrAllowedOps ArgumentVDoubleFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVDoubleFieldInfo = (~) Double
type AttrBaseTypeConstraint ArgumentVDoubleFieldInfo = (~) Argument
type AttrGetType ArgumentVDoubleFieldInfo = Double
type AttrLabel ArgumentVDoubleFieldInfo = "v_double"
attrGet _ = argumentReadVDouble
attrSet _ = argumentWriteVDouble
attrConstruct = undefined
attrClear _ = undefined
argumentVDouble :: AttrLabelProxy "vDouble"
argumentVDouble = AttrLabelProxy
argumentReadVShort :: MonadIO m => Argument -> m Int16
argumentReadVShort s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int16
return val
argumentWriteVShort :: MonadIO m => Argument -> Int16 -> m ()
argumentWriteVShort s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int16)
data ArgumentVShortFieldInfo
instance AttrInfo ArgumentVShortFieldInfo where
type AttrAllowedOps ArgumentVShortFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVShortFieldInfo = (~) Int16
type AttrBaseTypeConstraint ArgumentVShortFieldInfo = (~) Argument
type AttrGetType ArgumentVShortFieldInfo = Int16
type AttrLabel ArgumentVShortFieldInfo = "v_short"
attrGet _ = argumentReadVShort
attrSet _ = argumentWriteVShort
attrConstruct = undefined
attrClear _ = undefined
argumentVShort :: AttrLabelProxy "vShort"
argumentVShort = AttrLabelProxy
argumentReadVUshort :: MonadIO m => Argument -> m Word16
argumentReadVUshort s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word16
return val
argumentWriteVUshort :: MonadIO m => Argument -> Word16 -> m ()
argumentWriteVUshort s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word16)
data ArgumentVUshortFieldInfo
instance AttrInfo ArgumentVUshortFieldInfo where
type AttrAllowedOps ArgumentVUshortFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUshortFieldInfo = (~) Word16
type AttrBaseTypeConstraint ArgumentVUshortFieldInfo = (~) Argument
type AttrGetType ArgumentVUshortFieldInfo = Word16
type AttrLabel ArgumentVUshortFieldInfo = "v_ushort"
attrGet _ = argumentReadVUshort
attrSet _ = argumentWriteVUshort
attrConstruct = undefined
attrClear _ = undefined
argumentVUshort :: AttrLabelProxy "vUshort"
argumentVUshort = AttrLabelProxy
argumentReadVInt :: MonadIO m => Argument -> m Int32
argumentReadVInt s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int32
return val
argumentWriteVInt :: MonadIO m => Argument -> Int32 -> m ()
argumentWriteVInt s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int32)
data ArgumentVIntFieldInfo
instance AttrInfo ArgumentVIntFieldInfo where
type AttrAllowedOps ArgumentVIntFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVIntFieldInfo = (~) Int32
type AttrBaseTypeConstraint ArgumentVIntFieldInfo = (~) Argument
type AttrGetType ArgumentVIntFieldInfo = Int32
type AttrLabel ArgumentVIntFieldInfo = "v_int"
attrGet _ = argumentReadVInt
attrSet _ = argumentWriteVInt
attrConstruct = undefined
attrClear _ = undefined
argumentVInt :: AttrLabelProxy "vInt"
argumentVInt = AttrLabelProxy
argumentReadVUint :: MonadIO m => Argument -> m Word32
argumentReadVUint s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word32
return val
argumentWriteVUint :: MonadIO m => Argument -> Word32 -> m ()
argumentWriteVUint s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word32)
data ArgumentVUintFieldInfo
instance AttrInfo ArgumentVUintFieldInfo where
type AttrAllowedOps ArgumentVUintFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUintFieldInfo = (~) Word32
type AttrBaseTypeConstraint ArgumentVUintFieldInfo = (~) Argument
type AttrGetType ArgumentVUintFieldInfo = Word32
type AttrLabel ArgumentVUintFieldInfo = "v_uint"
attrGet _ = argumentReadVUint
attrSet _ = argumentWriteVUint
attrConstruct = undefined
attrClear _ = undefined
argumentVUint :: AttrLabelProxy "vUint"
argumentVUint = AttrLabelProxy
argumentReadVLong :: MonadIO m => Argument -> m CLong
argumentReadVLong s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CLong
return val
argumentWriteVLong :: MonadIO m => Argument -> CLong -> m ()
argumentWriteVLong s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CLong)
data ArgumentVLongFieldInfo
instance AttrInfo ArgumentVLongFieldInfo where
type AttrAllowedOps ArgumentVLongFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVLongFieldInfo = (~) CLong
type AttrBaseTypeConstraint ArgumentVLongFieldInfo = (~) Argument
type AttrGetType ArgumentVLongFieldInfo = CLong
type AttrLabel ArgumentVLongFieldInfo = "v_long"
attrGet _ = argumentReadVLong
attrSet _ = argumentWriteVLong
attrConstruct = undefined
attrClear _ = undefined
argumentVLong :: AttrLabelProxy "vLong"
argumentVLong = AttrLabelProxy
argumentReadVUlong :: MonadIO m => Argument -> m CULong
argumentReadVUlong s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CULong
return val
argumentWriteVUlong :: MonadIO m => Argument -> CULong -> m ()
argumentWriteVUlong s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CULong)
data ArgumentVUlongFieldInfo
instance AttrInfo ArgumentVUlongFieldInfo where
type AttrAllowedOps ArgumentVUlongFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVUlongFieldInfo = (~) CULong
type AttrBaseTypeConstraint ArgumentVUlongFieldInfo = (~) Argument
type AttrGetType ArgumentVUlongFieldInfo = CULong
type AttrLabel ArgumentVUlongFieldInfo = "v_ulong"
attrGet _ = argumentReadVUlong
attrSet _ = argumentWriteVUlong
attrConstruct = undefined
attrClear _ = undefined
argumentVUlong :: AttrLabelProxy "vUlong"
argumentVUlong = AttrLabelProxy
argumentReadVSsize :: MonadIO m => Argument -> m Int64
argumentReadVSsize s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int64
return val
argumentWriteVSsize :: MonadIO m => Argument -> Int64 -> m ()
argumentWriteVSsize s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int64)
data ArgumentVSsizeFieldInfo
instance AttrInfo ArgumentVSsizeFieldInfo where
type AttrAllowedOps ArgumentVSsizeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVSsizeFieldInfo = (~) Int64
type AttrBaseTypeConstraint ArgumentVSsizeFieldInfo = (~) Argument
type AttrGetType ArgumentVSsizeFieldInfo = Int64
type AttrLabel ArgumentVSsizeFieldInfo = "v_ssize"
attrGet _ = argumentReadVSsize
attrSet _ = argumentWriteVSsize
attrConstruct = undefined
attrClear _ = undefined
argumentVSsize :: AttrLabelProxy "vSsize"
argumentVSsize = AttrLabelProxy
argumentReadVSize :: MonadIO m => Argument -> m Word64
argumentReadVSize s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Word64
return val
argumentWriteVSize :: MonadIO m => Argument -> Word64 -> m ()
argumentWriteVSize s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Word64)
data ArgumentVSizeFieldInfo
instance AttrInfo ArgumentVSizeFieldInfo where
type AttrAllowedOps ArgumentVSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ArgumentVSizeFieldInfo = (~) Word64
type AttrBaseTypeConstraint ArgumentVSizeFieldInfo = (~) Argument
type AttrGetType ArgumentVSizeFieldInfo = Word64
type AttrLabel ArgumentVSizeFieldInfo = "v_size"
attrGet _ = argumentReadVSize
attrSet _ = argumentWriteVSize
attrConstruct = undefined
attrClear _ = undefined
argumentVSize :: AttrLabelProxy "vSize"
argumentVSize = AttrLabelProxy
argumentReadVString :: MonadIO m => Argument -> m (Maybe T.Text)
argumentReadVString s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
result <- convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
argumentWriteVString :: MonadIO m => Argument -> CString -> m ()
argumentWriteVString s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CString)
argumentClearVString :: MonadIO m => Argument -> m ()
argumentClearVString s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (nullPtr :: CString)
data ArgumentVStringFieldInfo
instance AttrInfo ArgumentVStringFieldInfo where
type AttrAllowedOps ArgumentVStringFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint ArgumentVStringFieldInfo = (~) CString
type AttrBaseTypeConstraint ArgumentVStringFieldInfo = (~) Argument
type AttrGetType ArgumentVStringFieldInfo = Maybe T.Text
type AttrLabel ArgumentVStringFieldInfo = "v_string"
attrGet _ = argumentReadVString
attrSet _ = argumentWriteVString
attrConstruct = undefined
attrClear _ = argumentClearVString
argumentVString :: AttrLabelProxy "vString"
argumentVString = AttrLabelProxy
argumentReadVPointer :: MonadIO m => Argument -> m (Ptr ())
argumentReadVPointer s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO (Ptr ())
return val
argumentWriteVPointer :: MonadIO m => Argument -> Ptr () -> m ()
argumentWriteVPointer s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Ptr ())
argumentClearVPointer :: MonadIO m => Argument -> m ()
argumentClearVPointer s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (nullPtr :: Ptr ())
data ArgumentVPointerFieldInfo
instance AttrInfo ArgumentVPointerFieldInfo where
type AttrAllowedOps ArgumentVPointerFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint ArgumentVPointerFieldInfo = (~) (Ptr ())
type AttrBaseTypeConstraint ArgumentVPointerFieldInfo = (~) Argument
type AttrGetType ArgumentVPointerFieldInfo = Ptr ()
type AttrLabel ArgumentVPointerFieldInfo = "v_pointer"
attrGet _ = argumentReadVPointer
attrSet _ = argumentWriteVPointer
attrConstruct = undefined
attrClear _ = argumentClearVPointer
argumentVPointer :: AttrLabelProxy "vPointer"
argumentVPointer = AttrLabelProxy
type instance AttributeList Argument = ArgumentAttributeList
type ArgumentAttributeList = ('[ '("vBoolean", ArgumentVBooleanFieldInfo), '("vInt8", ArgumentVInt8FieldInfo), '("vUint8", ArgumentVUint8FieldInfo), '("vInt16", ArgumentVInt16FieldInfo), '("vUint16", ArgumentVUint16FieldInfo), '("vInt32", ArgumentVInt32FieldInfo), '("vUint32", ArgumentVUint32FieldInfo), '("vInt64", ArgumentVInt64FieldInfo), '("vUint64", ArgumentVUint64FieldInfo), '("vFloat", ArgumentVFloatFieldInfo), '("vDouble", ArgumentVDoubleFieldInfo), '("vShort", ArgumentVShortFieldInfo), '("vUshort", ArgumentVUshortFieldInfo), '("vInt", ArgumentVIntFieldInfo), '("vUint", ArgumentVUintFieldInfo), '("vLong", ArgumentVLongFieldInfo), '("vUlong", ArgumentVUlongFieldInfo), '("vSsize", ArgumentVSsizeFieldInfo), '("vSize", ArgumentVSizeFieldInfo), '("vString", ArgumentVStringFieldInfo), '("vPointer", ArgumentVPointerFieldInfo)] :: [(Symbol, *)])
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