{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)

/No description available in the introspection data./
-}

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

module GI.Poppler.Structs.AnnotCalloutLine
    (

-- * Exported types
    AnnotCalloutLine(..)                    ,
    newZeroAnnotCalloutLine                 ,
    noAnnotCalloutLine                      ,


 -- * Methods
-- ** copy #method:copy#

#if ENABLE_OVERLOADING
    AnnotCalloutLineCopyMethodInfo          ,
#endif
    annotCalloutLineCopy                    ,


-- ** free #method:free#

#if ENABLE_OVERLOADING
    AnnotCalloutLineFreeMethodInfo          ,
#endif
    annotCalloutLineFree                    ,


-- ** new #method:new#

    annotCalloutLineNew                     ,




 -- * Properties
-- ** multiline #attr:multiline#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_multiline              ,
#endif
    getAnnotCalloutLineMultiline            ,
    setAnnotCalloutLineMultiline            ,


-- ** x1 #attr:x1#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_x1                     ,
#endif
    getAnnotCalloutLineX1                   ,
    setAnnotCalloutLineX1                   ,


-- ** x2 #attr:x2#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_x2                     ,
#endif
    getAnnotCalloutLineX2                   ,
    setAnnotCalloutLineX2                   ,


-- ** x3 #attr:x3#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_x3                     ,
#endif
    getAnnotCalloutLineX3                   ,
    setAnnotCalloutLineX3                   ,


-- ** y1 #attr:y1#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_y1                     ,
#endif
    getAnnotCalloutLineY1                   ,
    setAnnotCalloutLineY1                   ,


-- ** y2 #attr:y2#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_y2                     ,
#endif
    getAnnotCalloutLineY2                   ,
    setAnnotCalloutLineY2                   ,


-- ** y3 #attr:y3#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    annotCalloutLine_y3                     ,
#endif
    getAnnotCalloutLineY3                   ,
    setAnnotCalloutLineY3                   ,




    ) 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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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.Text as T
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


-- | Memory-managed wrapper type.
newtype AnnotCalloutLine = AnnotCalloutLine (ManagedPtr AnnotCalloutLine)
foreign import ccall "poppler_annot_callout_line_get_type" c_poppler_annot_callout_line_get_type ::
    IO GType

instance BoxedObject AnnotCalloutLine where
    boxedType _ = c_poppler_annot_callout_line_get_type

-- | Construct a `AnnotCalloutLine` struct initialized to zero.
newZeroAnnotCalloutLine :: MonadIO m => m AnnotCalloutLine
newZeroAnnotCalloutLine = liftIO $ callocBoxedBytes 56 >>= wrapBoxed AnnotCalloutLine

instance tag ~ 'AttrSet => Constructible AnnotCalloutLine tag where
    new _ attrs = do
        o <- newZeroAnnotCalloutLine
        GI.Attributes.set o attrs
        return o


-- | A convenience alias for `Nothing` :: `Maybe` `AnnotCalloutLine`.
noAnnotCalloutLine :: Maybe AnnotCalloutLine
noAnnotCalloutLine = Nothing

{- |
Get the value of the “@multiline@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #multiline
@
-}
getAnnotCalloutLineMultiline :: MonadIO m => AnnotCalloutLine -> m Bool
getAnnotCalloutLineMultiline s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CInt
    let val' = (/= 0) val
    return val'

{- |
Set the value of the “@multiline@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #multiline 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineMultiline :: MonadIO m => AnnotCalloutLine -> Bool -> m ()
setAnnotCalloutLineMultiline s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 0) (val' :: CInt)

#if ENABLE_OVERLOADING
data AnnotCalloutLineMultilineFieldInfo
instance AttrInfo AnnotCalloutLineMultilineFieldInfo where
    type AttrAllowedOps AnnotCalloutLineMultilineFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineMultilineFieldInfo = (~) Bool
    type AttrBaseTypeConstraint AnnotCalloutLineMultilineFieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineMultilineFieldInfo = Bool
    type AttrLabel AnnotCalloutLineMultilineFieldInfo = "multiline"
    type AttrOrigin AnnotCalloutLineMultilineFieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineMultiline
    attrSet _ = setAnnotCalloutLineMultiline
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_multiline :: AttrLabelProxy "multiline"
annotCalloutLine_multiline = AttrLabelProxy

#endif


{- |
Get the value of the “@x1@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #x1
@
-}
getAnnotCalloutLineX1 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineX1 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@x1@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #x1 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineX1 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineX1 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 8) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineX1FieldInfo
instance AttrInfo AnnotCalloutLineX1FieldInfo where
    type AttrAllowedOps AnnotCalloutLineX1FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineX1FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineX1FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineX1FieldInfo = Double
    type AttrLabel AnnotCalloutLineX1FieldInfo = "x1"
    type AttrOrigin AnnotCalloutLineX1FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineX1
    attrSet _ = setAnnotCalloutLineX1
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_x1 :: AttrLabelProxy "x1"
annotCalloutLine_x1 = AttrLabelProxy

#endif


{- |
Get the value of the “@y1@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #y1
@
-}
getAnnotCalloutLineY1 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineY1 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@y1@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #y1 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineY1 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineY1 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 16) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineY1FieldInfo
instance AttrInfo AnnotCalloutLineY1FieldInfo where
    type AttrAllowedOps AnnotCalloutLineY1FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineY1FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineY1FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineY1FieldInfo = Double
    type AttrLabel AnnotCalloutLineY1FieldInfo = "y1"
    type AttrOrigin AnnotCalloutLineY1FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineY1
    attrSet _ = setAnnotCalloutLineY1
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_y1 :: AttrLabelProxy "y1"
annotCalloutLine_y1 = AttrLabelProxy

#endif


{- |
Get the value of the “@x2@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #x2
@
-}
getAnnotCalloutLineX2 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineX2 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@x2@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #x2 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineX2 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineX2 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 24) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineX2FieldInfo
instance AttrInfo AnnotCalloutLineX2FieldInfo where
    type AttrAllowedOps AnnotCalloutLineX2FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineX2FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineX2FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineX2FieldInfo = Double
    type AttrLabel AnnotCalloutLineX2FieldInfo = "x2"
    type AttrOrigin AnnotCalloutLineX2FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineX2
    attrSet _ = setAnnotCalloutLineX2
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_x2 :: AttrLabelProxy "x2"
annotCalloutLine_x2 = AttrLabelProxy

#endif


{- |
Get the value of the “@y2@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #y2
@
-}
getAnnotCalloutLineY2 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineY2 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@y2@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #y2 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineY2 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineY2 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 32) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineY2FieldInfo
instance AttrInfo AnnotCalloutLineY2FieldInfo where
    type AttrAllowedOps AnnotCalloutLineY2FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineY2FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineY2FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineY2FieldInfo = Double
    type AttrLabel AnnotCalloutLineY2FieldInfo = "y2"
    type AttrOrigin AnnotCalloutLineY2FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineY2
    attrSet _ = setAnnotCalloutLineY2
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_y2 :: AttrLabelProxy "y2"
annotCalloutLine_y2 = AttrLabelProxy

#endif


{- |
Get the value of the “@x3@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #x3
@
-}
getAnnotCalloutLineX3 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineX3 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@x3@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #x3 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineX3 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineX3 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 40) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineX3FieldInfo
instance AttrInfo AnnotCalloutLineX3FieldInfo where
    type AttrAllowedOps AnnotCalloutLineX3FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineX3FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineX3FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineX3FieldInfo = Double
    type AttrLabel AnnotCalloutLineX3FieldInfo = "x3"
    type AttrOrigin AnnotCalloutLineX3FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineX3
    attrSet _ = setAnnotCalloutLineX3
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_x3 :: AttrLabelProxy "x3"
annotCalloutLine_x3 = AttrLabelProxy

#endif


{- |
Get the value of the “@y3@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' annotCalloutLine #y3
@
-}
getAnnotCalloutLineY3 :: MonadIO m => AnnotCalloutLine -> m Double
getAnnotCalloutLineY3 s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO CDouble
    let val' = realToFrac val
    return val'

{- |
Set the value of the “@y3@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' annotCalloutLine [ #y3 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAnnotCalloutLineY3 :: MonadIO m => AnnotCalloutLine -> Double -> m ()
setAnnotCalloutLineY3 s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 48) (val' :: CDouble)

#if ENABLE_OVERLOADING
data AnnotCalloutLineY3FieldInfo
instance AttrInfo AnnotCalloutLineY3FieldInfo where
    type AttrAllowedOps AnnotCalloutLineY3FieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnnotCalloutLineY3FieldInfo = (~) Double
    type AttrBaseTypeConstraint AnnotCalloutLineY3FieldInfo = (~) AnnotCalloutLine
    type AttrGetType AnnotCalloutLineY3FieldInfo = Double
    type AttrLabel AnnotCalloutLineY3FieldInfo = "y3"
    type AttrOrigin AnnotCalloutLineY3FieldInfo = AnnotCalloutLine
    attrGet _ = getAnnotCalloutLineY3
    attrSet _ = setAnnotCalloutLineY3
    attrConstruct = undefined
    attrClear _ = undefined

annotCalloutLine_y3 :: AttrLabelProxy "y3"
annotCalloutLine_y3 = AttrLabelProxy

#endif



#if ENABLE_OVERLOADING
instance O.HasAttributeList AnnotCalloutLine
type instance O.AttributeList AnnotCalloutLine = AnnotCalloutLineAttributeList
type AnnotCalloutLineAttributeList = ('[ '("multiline", AnnotCalloutLineMultilineFieldInfo), '("x1", AnnotCalloutLineX1FieldInfo), '("y1", AnnotCalloutLineY1FieldInfo), '("x2", AnnotCalloutLineX2FieldInfo), '("y2", AnnotCalloutLineY2FieldInfo), '("x3", AnnotCalloutLineX3FieldInfo), '("y3", AnnotCalloutLineY3FieldInfo)] :: [(Symbol, *)])
#endif

-- method AnnotCalloutLine::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Poppler", name = "AnnotCalloutLine"}))
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_callout_line_new" poppler_annot_callout_line_new ::
    IO (Ptr AnnotCalloutLine)

{- |
Creates a new empty 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine'.
-}
annotCalloutLineNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m AnnotCalloutLine
    {- ^ __Returns:__ a new allocated 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine', 'Nothing' in other case.
              It must be freed when done. -}
annotCalloutLineNew  = liftIO $ do
    result <- poppler_annot_callout_line_new
    checkUnexpectedReturnNULL "annotCalloutLineNew" result
    result' <- (wrapBoxed AnnotCalloutLine) result
    return result'

#if ENABLE_OVERLOADING
#endif

-- method AnnotCalloutLine::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "callout", argType = TInterface (Name {namespace = "Poppler", name = "AnnotCalloutLine"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #PopplerAnnotCalloutLine to be copied.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Poppler", name = "AnnotCalloutLine"}))
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_callout_line_copy" poppler_annot_callout_line_copy ::
    Ptr AnnotCalloutLine ->                 -- callout : TInterface (Name {namespace = "Poppler", name = "AnnotCalloutLine"})
    IO (Ptr AnnotCalloutLine)

{- |
It does copy /@callout@/ to a new 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine'.
-}
annotCalloutLineCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    AnnotCalloutLine
    {- ^ /@callout@/: the 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine' to be copied. -}
    -> m AnnotCalloutLine
    {- ^ __Returns:__ a new allocated 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine' as exact copy of
              /@callout@/, 'Nothing' in other case. It must be freed when done. -}
annotCalloutLineCopy callout = liftIO $ do
    callout' <- unsafeManagedPtrGetPtr callout
    result <- poppler_annot_callout_line_copy callout'
    checkUnexpectedReturnNULL "annotCalloutLineCopy" result
    result' <- (wrapBoxed AnnotCalloutLine) result
    touchManagedPtr callout
    return result'

#if ENABLE_OVERLOADING
data AnnotCalloutLineCopyMethodInfo
instance (signature ~ (m AnnotCalloutLine), MonadIO m) => O.MethodInfo AnnotCalloutLineCopyMethodInfo AnnotCalloutLine signature where
    overloadedMethod _ = annotCalloutLineCopy

#endif

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

foreign import ccall "poppler_annot_callout_line_free" poppler_annot_callout_line_free ::
    Ptr AnnotCalloutLine ->                 -- callout : TInterface (Name {namespace = "Poppler", name = "AnnotCalloutLine"})
    IO ()

{- |
Frees the memory used by 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine'.
-}
annotCalloutLineFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    AnnotCalloutLine
    {- ^ /@callout@/: a 'GI.Poppler.Structs.AnnotCalloutLine.AnnotCalloutLine' -}
    -> m ()
annotCalloutLineFree callout = liftIO $ do
    callout' <- unsafeManagedPtrGetPtr callout
    poppler_annot_callout_line_free callout'
    touchManagedPtr callout
    return ()

#if ENABLE_OVERLOADING
data AnnotCalloutLineFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo AnnotCalloutLineFreeMethodInfo AnnotCalloutLine signature where
    overloadedMethod _ = annotCalloutLineFree

#endif

#if ENABLE_OVERLOADING
type family ResolveAnnotCalloutLineMethod (t :: Symbol) (o :: *) :: * where
    ResolveAnnotCalloutLineMethod "copy" o = AnnotCalloutLineCopyMethodInfo
    ResolveAnnotCalloutLineMethod "free" o = AnnotCalloutLineFreeMethodInfo
    ResolveAnnotCalloutLineMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAnnotCalloutLineMethod t AnnotCalloutLine, O.MethodInfo info AnnotCalloutLine p) => OL.IsLabel t (AnnotCalloutLine -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif