{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- PopplerSignatureInfo contains detailed info about a signature
-- contained in a form field.
-- 
-- /Since: 21.12.0/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.Poppler.Structs.SignatureInfo
    ( 

-- * Exported types
    SignatureInfo(..)                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [copy]("GI.Poppler.Structs.SignatureInfo#g:method:copy"), [free]("GI.Poppler.Structs.SignatureInfo#g:method:free").
-- 
-- ==== Getters
-- [getCertificateStatus]("GI.Poppler.Structs.SignatureInfo#g:method:getCertificateStatus"), [getLocalSigningTime]("GI.Poppler.Structs.SignatureInfo#g:method:getLocalSigningTime"), [getSignatureStatus]("GI.Poppler.Structs.SignatureInfo#g:method:getSignatureStatus"), [getSignerName]("GI.Poppler.Structs.SignatureInfo#g:method:getSignerName").
-- 
-- ==== Setters
-- /None/.

#if defined(ENABLE_OVERLOADING)
    ResolveSignatureInfoMethod              ,
#endif

-- ** copy #method:copy#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoCopyMethodInfo             ,
#endif
    signatureInfoCopy                       ,


-- ** free #method:free#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoFreeMethodInfo             ,
#endif
    signatureInfoFree                       ,


-- ** getCertificateStatus #method:getCertificateStatus#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoGetCertificateStatusMethodInfo,
#endif
    signatureInfoGetCertificateStatus       ,


-- ** getLocalSigningTime #method:getLocalSigningTime#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoGetLocalSigningTimeMethodInfo,
#endif
    signatureInfoGetLocalSigningTime        ,


-- ** getSignatureStatus #method:getSignatureStatus#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoGetSignatureStatusMethodInfo,
#endif
    signatureInfoGetSignatureStatus         ,


-- ** getSignerName #method:getSignerName#

#if defined(ENABLE_OVERLOADING)
    SignatureInfoGetSignerNameMethodInfo    ,
#endif
    signatureInfoGetSignerName              ,




    ) 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 GI.GLib.Structs.DateTime as GLib.DateTime
import {-# SOURCE #-} qualified GI.Poppler.Enums as Poppler.Enums

-- | Memory-managed wrapper type.
newtype SignatureInfo = SignatureInfo (SP.ManagedPtr SignatureInfo)
    deriving (SignatureInfo -> SignatureInfo -> Bool
(SignatureInfo -> SignatureInfo -> Bool)
-> (SignatureInfo -> SignatureInfo -> Bool) -> Eq SignatureInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SignatureInfo -> SignatureInfo -> Bool
== :: SignatureInfo -> SignatureInfo -> Bool
$c/= :: SignatureInfo -> SignatureInfo -> Bool
/= :: SignatureInfo -> SignatureInfo -> Bool
Eq)

instance SP.ManagedPtrNewtype SignatureInfo where
    toManagedPtr :: SignatureInfo -> ManagedPtr SignatureInfo
toManagedPtr (SignatureInfo ManagedPtr SignatureInfo
p) = ManagedPtr SignatureInfo
p

foreign import ccall "poppler_signature_info_get_type" c_poppler_signature_info_get_type :: 
    IO GType

type instance O.ParentTypes SignatureInfo = '[]
instance O.HasParentTypes SignatureInfo

instance B.Types.TypedObject SignatureInfo where
    glibType :: IO GType
glibType = IO GType
c_poppler_signature_info_get_type

instance B.Types.GBoxed SignatureInfo

-- | Convert 'SignatureInfo' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe SignatureInfo) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_poppler_signature_info_get_type
    gvalueSet_ :: Ptr GValue -> Maybe SignatureInfo -> IO ()
gvalueSet_ Ptr GValue
gv Maybe SignatureInfo
P.Nothing = Ptr GValue -> Ptr SignatureInfo -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr SignatureInfo
forall a. Ptr a
FP.nullPtr :: FP.Ptr SignatureInfo)
    gvalueSet_ Ptr GValue
gv (P.Just SignatureInfo
obj) = SignatureInfo -> (Ptr SignatureInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr SignatureInfo
obj (Ptr GValue -> Ptr SignatureInfo -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe SignatureInfo)
gvalueGet_ Ptr GValue
gv = do
        Ptr SignatureInfo
ptr <- Ptr GValue -> IO (Ptr SignatureInfo)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr SignatureInfo)
        if Ptr SignatureInfo
ptr Ptr SignatureInfo -> Ptr SignatureInfo -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr SignatureInfo
forall a. Ptr a
FP.nullPtr
        then SignatureInfo -> Maybe SignatureInfo
forall a. a -> Maybe a
P.Just (SignatureInfo -> Maybe SignatureInfo)
-> IO SignatureInfo -> IO (Maybe SignatureInfo)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr SignatureInfo -> SignatureInfo)
-> Ptr SignatureInfo -> IO SignatureInfo
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr SignatureInfo -> SignatureInfo
SignatureInfo Ptr SignatureInfo
ptr
        else Maybe SignatureInfo -> IO (Maybe SignatureInfo)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe SignatureInfo
forall a. Maybe a
P.Nothing
        
    


#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SignatureInfo
type instance O.AttributeList SignatureInfo = SignatureInfoAttributeList
type SignatureInfoAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif

-- method SignatureInfo::copy
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just
--                       "a #PopplerSignatureInfo structure containing signature metadata and validation status"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "Poppler" , name = "SignatureInfo" })
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_copy" poppler_signature_info_copy :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO (Ptr SignatureInfo)

-- | Copies /@siginfo@/, creating an identical t'GI.Poppler.Structs.SignatureInfo.SignatureInfo'.
-- 
-- /Since: 21.12.0/
signatureInfoCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo' structure containing signature metadata and validation status
    -> m SignatureInfo
    -- ^ __Returns:__ a new t'GI.Poppler.Structs.SignatureInfo.SignatureInfo' structure identical to /@siginfo@/
signatureInfoCopy :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m SignatureInfo
signatureInfoCopy SignatureInfo
siginfo = IO SignatureInfo -> m SignatureInfo
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignatureInfo -> m SignatureInfo)
-> IO SignatureInfo -> m SignatureInfo
forall a b. (a -> b) -> a -> b
$ do
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    Ptr SignatureInfo
result <- Ptr SignatureInfo -> IO (Ptr SignatureInfo)
poppler_signature_info_copy Ptr SignatureInfo
siginfo'
    Text -> Ptr SignatureInfo -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"signatureInfoCopy" Ptr SignatureInfo
result
    SignatureInfo
result' <- ((ManagedPtr SignatureInfo -> SignatureInfo)
-> Ptr SignatureInfo -> IO SignatureInfo
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr SignatureInfo -> SignatureInfo
SignatureInfo) Ptr SignatureInfo
result
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    SignatureInfo -> IO SignatureInfo
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return SignatureInfo
result'

#if defined(ENABLE_OVERLOADING)
data SignatureInfoCopyMethodInfo
instance (signature ~ (m SignatureInfo), MonadIO m) => O.OverloadedMethod SignatureInfoCopyMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoCopy

instance O.OverloadedMethodInfo SignatureInfoCopyMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoCopy",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoCopy"
        })


#endif

-- method SignatureInfo::free
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just
--                       "a #PopplerSignatureInfo structure containing signature metadata and validation status"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_free" poppler_signature_info_free :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO ()

-- | Frees /@siginfo@/
-- 
-- /Since: 21.12.0/
signatureInfoFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo' structure containing signature metadata and validation status
    -> m ()
signatureInfoFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m ()
signatureInfoFree SignatureInfo
siginfo = 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
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    Ptr SignatureInfo -> IO ()
poppler_signature_info_free Ptr SignatureInfo
siginfo'
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data SignatureInfoFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod SignatureInfoFreeMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoFree

instance O.OverloadedMethodInfo SignatureInfoFreeMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoFree",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoFree"
        })


#endif

-- method SignatureInfo::get_certificate_status
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #PopplerSignatureInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "Poppler" , name = "CertificateStatus" })
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_get_certificate_status" poppler_signature_info_get_certificate_status :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO CUInt

-- | Returns status of the certificate for given PopplerSignatureInfo.
-- 
-- /Since: 21.12.0/
signatureInfoGetCertificateStatus ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo'
    -> m Poppler.Enums.CertificateStatus
    -- ^ __Returns:__ certificate status of the signature
signatureInfoGetCertificateStatus :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m CertificateStatus
signatureInfoGetCertificateStatus SignatureInfo
siginfo = IO CertificateStatus -> m CertificateStatus
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CertificateStatus -> m CertificateStatus)
-> IO CertificateStatus -> m CertificateStatus
forall a b. (a -> b) -> a -> b
$ do
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    CUInt
result <- Ptr SignatureInfo -> IO CUInt
poppler_signature_info_get_certificate_status Ptr SignatureInfo
siginfo'
    let result' :: CertificateStatus
result' = (Int -> CertificateStatus
forall a. Enum a => Int -> a
toEnum (Int -> CertificateStatus)
-> (CUInt -> Int) -> CUInt -> CertificateStatus
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    CertificateStatus -> IO CertificateStatus
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CertificateStatus
result'

#if defined(ENABLE_OVERLOADING)
data SignatureInfoGetCertificateStatusMethodInfo
instance (signature ~ (m Poppler.Enums.CertificateStatus), MonadIO m) => O.OverloadedMethod SignatureInfoGetCertificateStatusMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoGetCertificateStatus

instance O.OverloadedMethodInfo SignatureInfoGetCertificateStatusMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoGetCertificateStatus",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoGetCertificateStatus"
        })


#endif

-- method SignatureInfo::get_local_signing_time
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #PopplerSignatureInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "GLib" , name = "DateTime" })
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_get_local_signing_time" poppler_signature_info_get_local_signing_time :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO (Ptr GLib.DateTime.DateTime)

-- | Returns local time of signing as GDateTime. This does not
-- contain information about time zone since it has not been
-- preserved during conversion.
-- Do not modify returned value since it is internal to
-- PopplerSignatureInfo.
-- 
-- /Since: 21.12.0/
signatureInfoGetLocalSigningTime ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo'
    -> m GLib.DateTime.DateTime
    -- ^ __Returns:__ GDateTime
signatureInfoGetLocalSigningTime :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m DateTime
signatureInfoGetLocalSigningTime SignatureInfo
siginfo = IO DateTime -> m DateTime
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO DateTime -> m DateTime) -> IO DateTime -> m DateTime
forall a b. (a -> b) -> a -> b
$ do
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    Ptr DateTime
result <- Ptr SignatureInfo -> IO (Ptr DateTime)
poppler_signature_info_get_local_signing_time Ptr SignatureInfo
siginfo'
    Text -> Ptr DateTime -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"signatureInfoGetLocalSigningTime" Ptr DateTime
result
    DateTime
result' <- ((ManagedPtr DateTime -> DateTime) -> Ptr DateTime -> IO DateTime
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr DateTime -> DateTime
GLib.DateTime.DateTime) Ptr DateTime
result
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    DateTime -> IO DateTime
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return DateTime
result'

#if defined(ENABLE_OVERLOADING)
data SignatureInfoGetLocalSigningTimeMethodInfo
instance (signature ~ (m GLib.DateTime.DateTime), MonadIO m) => O.OverloadedMethod SignatureInfoGetLocalSigningTimeMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoGetLocalSigningTime

instance O.OverloadedMethodInfo SignatureInfoGetLocalSigningTimeMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoGetLocalSigningTime",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoGetLocalSigningTime"
        })


#endif

-- method SignatureInfo::get_signature_status
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #PopplerSignatureInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "Poppler" , name = "SignatureStatus" })
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_get_signature_status" poppler_signature_info_get_signature_status :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO CUInt

-- | Returns status of the signature for given PopplerSignatureInfo.
-- 
-- /Since: 21.12.0/
signatureInfoGetSignatureStatus ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo'
    -> m Poppler.Enums.SignatureStatus
    -- ^ __Returns:__ signature status of the signature
signatureInfoGetSignatureStatus :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m SignatureStatus
signatureInfoGetSignatureStatus SignatureInfo
siginfo = IO SignatureStatus -> m SignatureStatus
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignatureStatus -> m SignatureStatus)
-> IO SignatureStatus -> m SignatureStatus
forall a b. (a -> b) -> a -> b
$ do
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    CUInt
result <- Ptr SignatureInfo -> IO CUInt
poppler_signature_info_get_signature_status Ptr SignatureInfo
siginfo'
    let result' :: SignatureStatus
result' = (Int -> SignatureStatus
forall a. Enum a => Int -> a
toEnum (Int -> SignatureStatus)
-> (CUInt -> Int) -> CUInt -> SignatureStatus
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    SignatureStatus -> IO SignatureStatus
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return SignatureStatus
result'

#if defined(ENABLE_OVERLOADING)
data SignatureInfoGetSignatureStatusMethodInfo
instance (signature ~ (m Poppler.Enums.SignatureStatus), MonadIO m) => O.OverloadedMethod SignatureInfoGetSignatureStatusMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoGetSignatureStatus

instance O.OverloadedMethodInfo SignatureInfoGetSignatureStatusMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoGetSignatureStatus",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoGetSignatureStatus"
        })


#endif

-- method SignatureInfo::get_signer_name
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "siginfo"
--           , argType =
--               TInterface Name { namespace = "Poppler" , name = "SignatureInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #PopplerSignatureInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "poppler_signature_info_get_signer_name" poppler_signature_info_get_signer_name :: 
    Ptr SignatureInfo ->                    -- siginfo : TInterface (Name {namespace = "Poppler", name = "SignatureInfo"})
    IO CString

-- | Returns name of signer for given PopplerSignatureInfo.
-- 
-- /Since: 21.12.0/
signatureInfoGetSignerName ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    SignatureInfo
    -- ^ /@siginfo@/: a t'GI.Poppler.Structs.SignatureInfo.SignatureInfo'
    -> m T.Text
    -- ^ __Returns:__ A string.
signatureInfoGetSignerName :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
SignatureInfo -> m Text
signatureInfoGetSignerName SignatureInfo
siginfo = 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
    Ptr SignatureInfo
siginfo' <- SignatureInfo -> IO (Ptr SignatureInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr SignatureInfo
siginfo
    CString
result <- Ptr SignatureInfo -> IO CString
poppler_signature_info_get_signer_name Ptr SignatureInfo
siginfo'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"signatureInfoGetSignerName" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    SignatureInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr SignatureInfo
siginfo
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data SignatureInfoGetSignerNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.OverloadedMethod SignatureInfoGetSignerNameMethodInfo SignatureInfo signature where
    overloadedMethod = signatureInfoGetSignerName

instance O.OverloadedMethodInfo SignatureInfoGetSignerNameMethodInfo SignatureInfo where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.Poppler.Structs.SignatureInfo.signatureInfoGetSignerName",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-poppler-0.18.29/docs/GI-Poppler-Structs-SignatureInfo.html#v:signatureInfoGetSignerName"
        })


#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveSignatureInfoMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSignatureInfoMethod "copy" o = SignatureInfoCopyMethodInfo
    ResolveSignatureInfoMethod "free" o = SignatureInfoFreeMethodInfo
    ResolveSignatureInfoMethod "getCertificateStatus" o = SignatureInfoGetCertificateStatusMethodInfo
    ResolveSignatureInfoMethod "getLocalSigningTime" o = SignatureInfoGetLocalSigningTimeMethodInfo
    ResolveSignatureInfoMethod "getSignatureStatus" o = SignatureInfoGetSignatureStatusMethodInfo
    ResolveSignatureInfoMethod "getSignerName" o = SignatureInfoGetSignerNameMethodInfo
    ResolveSignatureInfoMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSignatureInfoMethod t SignatureInfo, O.OverloadedMethod info SignatureInfo p) => OL.IsLabel t (SignatureInfo -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveSignatureInfoMethod t SignatureInfo, O.OverloadedMethod info SignatureInfo p, R.HasField t SignatureInfo p) => R.HasField t SignatureInfo p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveSignatureInfoMethod t SignatureInfo, O.OverloadedMethodInfo info SignatureInfo) => OL.IsLabel t (O.MethodProxy info SignatureInfo) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif