{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Secret.Structs.Value
(
Value(..) ,
#if defined(ENABLE_OVERLOADING)
ResolveValueMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
ValueGetMethodInfo ,
#endif
valueGet ,
#if defined(ENABLE_OVERLOADING)
ValueGetContentTypeMethodInfo ,
#endif
valueGetContentType ,
#if defined(ENABLE_OVERLOADING)
ValueGetTextMethodInfo ,
#endif
valueGetText ,
valueNew ,
valueNewFull ,
#if defined(ENABLE_OVERLOADING)
ValueRefMethodInfo ,
#endif
valueRef ,
#if defined(ENABLE_OVERLOADING)
ValueUnrefMethodInfo ,
#endif
valueUnref ,
#if defined(ENABLE_OVERLOADING)
ValueUnrefToPasswordMethodInfo ,
#endif
valueUnrefToPassword ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import qualified GI.GLib.Callbacks as GLib.Callbacks
#else
import qualified GI.GLib.Callbacks as GLib.Callbacks
#endif
newtype Value = Value (SP.ManagedPtr Value)
deriving (Value -> Value -> Bool
(Value -> Value -> Bool) -> (Value -> Value -> Bool) -> Eq Value
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Value -> Value -> Bool
== :: Value -> Value -> Bool
$c/= :: Value -> Value -> Bool
/= :: Value -> Value -> Bool
Eq)
instance SP.ManagedPtrNewtype Value where
toManagedPtr :: Value -> ManagedPtr Value
toManagedPtr (Value ManagedPtr Value
p) = ManagedPtr Value
p
foreign import ccall "secret_value_get_type" c_secret_value_get_type ::
IO GType
type instance O.ParentTypes Value = '[]
instance O.HasParentTypes Value
instance B.Types.TypedObject Value where
glibType :: IO GType
glibType = IO GType
c_secret_value_get_type
instance B.Types.GBoxed Value
instance B.GValue.IsGValue (Maybe Value) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_secret_value_get_type
gvalueSet_ :: Ptr GValue -> Maybe Value -> IO ()
gvalueSet_ Ptr GValue
gv Maybe Value
P.Nothing = Ptr GValue -> Ptr Value -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr Value
forall a. Ptr a
FP.nullPtr :: FP.Ptr Value)
gvalueSet_ Ptr GValue
gv (P.Just Value
obj) = Value -> (Ptr Value -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Value
obj (Ptr GValue -> Ptr Value -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe Value)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr Value)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr Value)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newBoxed Value ptr
else return P.Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Value
type instance O.AttributeList Value = ValueAttributeList
type ValueAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "secret_value_new" secret_value_new ::
CString ->
DI.Int64 ->
CString ->
IO (Ptr Value)
valueNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> DI.Int64
-> T.Text
-> m Value
valueNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> Int64 -> Text -> m Value
valueNew Text
secret Int64
length_ Text
contentType = IO Value -> m Value
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Value -> m Value) -> IO Value -> m Value
forall a b. (a -> b) -> a -> b
$ do
secret' <- Text -> IO CString
textToCString Text
secret
contentType' <- textToCString contentType
result <- secret_value_new secret' length_ contentType'
checkUnexpectedReturnNULL "valueNew" result
result' <- (wrapBoxed Value) result
freeMem secret'
freeMem contentType'
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "secret_value_new_full" secret_value_new_full ::
CString ->
DI.Int64 ->
CString ->
FunPtr GLib.Callbacks.C_DestroyNotify ->
IO (Ptr Value)
valueNewFull ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> DI.Int64
-> T.Text
-> GLib.Callbacks.DestroyNotify
-> m Value
valueNewFull :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> Int64 -> Text -> DestroyNotify -> m Value
valueNewFull Text
secret Int64
length_ Text
contentType DestroyNotify
destroy = IO Value -> m Value
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Value -> m Value) -> IO Value -> m Value
forall a b. (a -> b) -> a -> b
$ do
secret' <- Text -> IO CString
textToCString Text
secret
contentType' <- textToCString contentType
ptrdestroy <- callocMem :: IO (Ptr (FunPtr GLib.Callbacks.C_DestroyNotify))
destroy' <- GLib.Callbacks.mk_DestroyNotify (GLib.Callbacks.wrap_DestroyNotify (Just ptrdestroy) destroy)
poke ptrdestroy destroy'
result <- secret_value_new_full secret' length_ contentType' destroy'
checkUnexpectedReturnNULL "valueNewFull" result
result' <- (wrapBoxed Value) result
freeMem secret'
freeMem contentType'
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "secret_value_get" secret_value_get ::
Ptr Value ->
Ptr FCT.CSize ->
IO (Ptr Word8)
valueGet ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> m ByteString
valueGet :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> m ByteString
valueGet Value
value = IO ByteString -> m ByteString
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ByteString -> m ByteString) -> IO ByteString -> m ByteString
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
length_ <- allocMem :: IO (Ptr FCT.CSize)
result <- secret_value_get value' length_
length_' <- peek length_
checkUnexpectedReturnNULL "valueGet" result
result' <- (unpackByteStringWithLength length_') result
touchManagedPtr value
freeMem length_
return result'
#if defined(ENABLE_OVERLOADING)
data ValueGetMethodInfo
instance (signature ~ (m ByteString), MonadIO m) => O.OverloadedMethod ValueGetMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> m ByteString
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> m ByteString
valueGet
instance O.OverloadedMethodInfo ValueGetMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueGet",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueGet"
})
#endif
foreign import ccall "secret_value_get_content_type" secret_value_get_content_type ::
Ptr Value ->
IO CString
valueGetContentType ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> m T.Text
valueGetContentType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m Text
valueGetContentType Value
value = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
result <- secret_value_get_content_type value'
checkUnexpectedReturnNULL "valueGetContentType" result
result' <- cstringToText result
touchManagedPtr value
return result'
#if defined(ENABLE_OVERLOADING)
data ValueGetContentTypeMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.OverloadedMethod ValueGetContentTypeMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> m Text
forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m Text
valueGetContentType
instance O.OverloadedMethodInfo ValueGetContentTypeMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueGetContentType",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueGetContentType"
})
#endif
foreign import ccall "secret_value_get_text" secret_value_get_text ::
Ptr Value ->
IO CString
valueGetText ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> m (Maybe T.Text)
valueGetText :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> m (Maybe Text)
valueGetText Value
value = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
result <- secret_value_get_text value'
maybeResult <- convertIfNonNull result $ \CString
result' -> do
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
return result''
touchManagedPtr value
return maybeResult
#if defined(ENABLE_OVERLOADING)
data ValueGetTextMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m) => O.OverloadedMethod ValueGetTextMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> m (Maybe Text)
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> m (Maybe Text)
valueGetText
instance O.OverloadedMethodInfo ValueGetTextMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueGetText",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueGetText"
})
#endif
foreign import ccall "secret_value_ref" secret_value_ref ::
Ptr Value ->
IO (Ptr Value)
valueRef ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> m Value
valueRef :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m Value
valueRef Value
value = IO Value -> m Value
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Value -> m Value) -> IO Value -> m Value
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
result <- secret_value_ref value'
checkUnexpectedReturnNULL "valueRef" result
result' <- (wrapBoxed Value) result
touchManagedPtr value
return result'
#if defined(ENABLE_OVERLOADING)
data ValueRefMethodInfo
instance (signature ~ (m Value), MonadIO m) => O.OverloadedMethod ValueRefMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> m Value
forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m Value
valueRef
instance O.OverloadedMethodInfo ValueRefMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueRef",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueRef"
})
#endif
foreign import ccall "secret_value_unref" secret_value_unref ::
Ptr Value ->
IO ()
valueUnref ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> m ()
valueUnref :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m ()
valueUnref Value
value = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
secret_value_unref value'
touchManagedPtr value
return ()
#if defined(ENABLE_OVERLOADING)
data ValueUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod ValueUnrefMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> m ()
forall (m :: * -> *). (HasCallStack, MonadIO m) => Value -> m ()
valueUnref
instance O.OverloadedMethodInfo ValueUnrefMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueUnref",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueUnref"
})
#endif
foreign import ccall "secret_value_unref_to_password" secret_value_unref_to_password ::
Ptr Value ->
Ptr FCT.CSize ->
IO CString
valueUnrefToPassword ::
(B.CallStack.HasCallStack, MonadIO m) =>
Value
-> FCT.CSize
-> m ((T.Text, FCT.CSize))
valueUnrefToPassword :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> CSize -> m (Text, CSize)
valueUnrefToPassword Value
value CSize
length_ = IO (Text, CSize) -> m (Text, CSize)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Text, CSize) -> m (Text, CSize))
-> IO (Text, CSize) -> m (Text, CSize)
forall a b. (a -> b) -> a -> b
$ do
value' <- Value -> IO (Ptr Value)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Value
value
length_' <- allocMem :: IO (Ptr FCT.CSize)
poke length_' length_
result <- secret_value_unref_to_password value' length_'
checkUnexpectedReturnNULL "valueUnrefToPassword" result
result' <- cstringToText result
freeMem result
length_'' <- peek length_'
touchManagedPtr value
freeMem length_'
return (result', length_'')
#if defined(ENABLE_OVERLOADING)
data ValueUnrefToPasswordMethodInfo
instance (signature ~ (FCT.CSize -> m ((T.Text, FCT.CSize))), MonadIO m) => O.OverloadedMethod ValueUnrefToPasswordMethodInfo Value signature where
overloadedMethod :: Value -> signature
overloadedMethod = Value -> signature
Value -> CSize -> m (Text, CSize)
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Value -> CSize -> m (Text, CSize)
valueUnrefToPassword
instance O.OverloadedMethodInfo ValueUnrefToPasswordMethodInfo Value where
overloadedMethodInfo :: Maybe ResolvedSymbolInfo
overloadedMethodInfo = ResolvedSymbolInfo -> Maybe ResolvedSymbolInfo
forall a. a -> Maybe a
P.Just (O.ResolvedSymbolInfo {
resolvedSymbolName :: Text
O.resolvedSymbolName = Text
"GI.Secret.Structs.Value.valueUnrefToPassword",
resolvedSymbolURL :: Text
O.resolvedSymbolURL = Text
"https://hackage.haskell.org/package/gi-secret-0.0.20/docs/GI-Secret-Structs-Value.html#v:valueUnrefToPassword"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveValueMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveValueMethod "get" o = ValueGetMethodInfo
ResolveValueMethod "ref" o = ValueRefMethodInfo
ResolveValueMethod "unref" o = ValueUnrefMethodInfo
ResolveValueMethod "unrefToPassword" o = ValueUnrefToPasswordMethodInfo
ResolveValueMethod "getContentType" o = ValueGetContentTypeMethodInfo
ResolveValueMethod "getText" o = ValueGetTextMethodInfo
ResolveValueMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveValueMethod t Value, O.OverloadedMethod info Value p) => OL.IsLabel t (Value -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel :: Value -> p
fromLabel = forall {k} (i :: k) o s. OverloadedMethod i o s => o -> s
forall i o s. OverloadedMethod i o s => o -> s
O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveValueMethod t Value, O.OverloadedMethod info Value p, R.HasField t Value p) => R.HasField t Value p where
getField :: Value -> p
getField = forall {k} (i :: k) o s. OverloadedMethod i o s => o -> s
forall i o s. OverloadedMethod i o s => o -> s
O.overloadedMethod @info
#endif
instance (info ~ ResolveValueMethod t Value, O.OverloadedMethodInfo info Value) => OL.IsLabel t (O.MethodProxy info Value) where
#if MIN_VERSION_base(4,10,0)
fromLabel :: MethodProxy info Value
fromLabel = MethodProxy info Value
forall info obj. MethodProxy info obj
O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif