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

The #PangoFontDescription structure represents the description
of an ideal font. These structures are used both to list
what fonts are available on the system and also for specifying
the characteristics of a font to load.
-}

module GI.Pango.Structs.FontDescription
    ( 

-- * Exported types
    FontDescription(..)                     ,
    noFontDescription                       ,


 -- * Methods
-- ** fontDescriptionBetterMatch
    fontDescriptionBetterMatch              ,


-- ** fontDescriptionCopy
    fontDescriptionCopy                     ,


-- ** fontDescriptionCopyStatic
    fontDescriptionCopyStatic               ,


-- ** fontDescriptionEqual
    fontDescriptionEqual                    ,


-- ** fontDescriptionFree
    fontDescriptionFree                     ,


-- ** fontDescriptionGetFamily
    fontDescriptionGetFamily                ,


-- ** fontDescriptionGetGravity
    fontDescriptionGetGravity               ,


-- ** fontDescriptionGetSetFields
    fontDescriptionGetSetFields             ,


-- ** fontDescriptionGetSize
    fontDescriptionGetSize                  ,


-- ** fontDescriptionGetSizeIsAbsolute
    fontDescriptionGetSizeIsAbsolute        ,


-- ** fontDescriptionGetStretch
    fontDescriptionGetStretch               ,


-- ** fontDescriptionGetStyle
    fontDescriptionGetStyle                 ,


-- ** fontDescriptionGetVariant
    fontDescriptionGetVariant               ,


-- ** fontDescriptionGetWeight
    fontDescriptionGetWeight                ,


-- ** fontDescriptionHash
    fontDescriptionHash                     ,


-- ** fontDescriptionMerge
    fontDescriptionMerge                    ,


-- ** fontDescriptionMergeStatic
    fontDescriptionMergeStatic              ,


-- ** fontDescriptionNew
    fontDescriptionNew                      ,


-- ** fontDescriptionSetAbsoluteSize
    fontDescriptionSetAbsoluteSize          ,


-- ** fontDescriptionSetFamily
    fontDescriptionSetFamily                ,


-- ** fontDescriptionSetFamilyStatic
    fontDescriptionSetFamilyStatic          ,


-- ** fontDescriptionSetGravity
    fontDescriptionSetGravity               ,


-- ** fontDescriptionSetSize
    fontDescriptionSetSize                  ,


-- ** fontDescriptionSetStretch
    fontDescriptionSetStretch               ,


-- ** fontDescriptionSetStyle
    fontDescriptionSetStyle                 ,


-- ** fontDescriptionSetVariant
    fontDescriptionSetVariant               ,


-- ** fontDescriptionSetWeight
    fontDescriptionSetWeight                ,


-- ** fontDescriptionToFilename
    fontDescriptionToFilename               ,


-- ** fontDescriptionToString
    fontDescriptionToString                 ,


-- ** fontDescriptionUnsetFields
    fontDescriptionUnsetFields              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Pango.Types
import GI.Pango.Callbacks

newtype FontDescription = FontDescription (ForeignPtr FontDescription)
foreign import ccall "pango_font_description_get_type" c_pango_font_description_get_type :: 
    IO GType

instance BoxedObject FontDescription where
    boxedType _ = c_pango_font_description_get_type

noFontDescription :: Maybe FontDescription
noFontDescription = Nothing

-- method FontDescription::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Pango" "FontDescription"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_new" pango_font_description_new :: 
    IO (Ptr FontDescription)


fontDescriptionNew ::
    (MonadIO m) =>
    m FontDescription
fontDescriptionNew  = liftIO $ do
    result <- pango_font_description_new
    checkUnexpectedReturnNULL "pango_font_description_new" result
    result' <- (wrapBoxed FontDescription) result
    return result'

-- method FontDescription::better_match
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_better_match" pango_font_description_better_match :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    Ptr FontDescription ->                  -- old_match : TInterface "Pango" "FontDescription"
    Ptr FontDescription ->                  -- new_match : TInterface "Pango" "FontDescription"
    IO CInt


fontDescriptionBetterMatch ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Maybe (FontDescription) ->              -- old_match
    FontDescription ->                      -- new_match
    m Bool
fontDescriptionBetterMatch _obj old_match new_match = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    maybeOld_match <- case old_match of
        Nothing -> return nullPtr
        Just jOld_match -> do
            let jOld_match' = unsafeManagedPtrGetPtr jOld_match
            return jOld_match'
    let new_match' = unsafeManagedPtrGetPtr new_match
    result <- pango_font_description_better_match _obj' maybeOld_match new_match'
    let result' = (/= 0) result
    touchManagedPtr _obj
    whenJust old_match touchManagedPtr
    touchManagedPtr new_match
    return result'

-- method FontDescription::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "FontDescription"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_copy" pango_font_description_copy :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO (Ptr FontDescription)


fontDescriptionCopy ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m FontDescription
fontDescriptionCopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_copy _obj'
    checkUnexpectedReturnNULL "pango_font_description_copy" result
    result' <- (wrapBoxed FontDescription) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::copy_static
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "FontDescription"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_copy_static" pango_font_description_copy_static :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO (Ptr FontDescription)


fontDescriptionCopyStatic ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m FontDescription
fontDescriptionCopyStatic _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_copy_static _obj'
    checkUnexpectedReturnNULL "pango_font_description_copy_static" result
    result' <- (wrapBoxed FontDescription) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::equal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_equal" pango_font_description_equal :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    Ptr FontDescription ->                  -- desc2 : TInterface "Pango" "FontDescription"
    IO CInt


fontDescriptionEqual ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    FontDescription ->                      -- desc2
    m Bool
fontDescriptionEqual _obj desc2 = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let desc2' = unsafeManagedPtrGetPtr desc2
    result <- pango_font_description_equal _obj' desc2'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr desc2
    return result'

-- method FontDescription::free
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_free" pango_font_description_free :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO ()


fontDescriptionFree ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m ()
fontDescriptionFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    pango_font_description_free _obj'
    touchManagedPtr _obj
    return ()

-- method FontDescription::get_family
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_family" pango_font_description_get_family :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CString


fontDescriptionGetFamily ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m T.Text
fontDescriptionGetFamily _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_family _obj'
    checkUnexpectedReturnNULL "pango_font_description_get_family" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_gravity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Gravity"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_gravity" pango_font_description_get_gravity :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetGravity ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Gravity
fontDescriptionGetGravity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_gravity _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_set_fields
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "FontMask"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_set_fields" pango_font_description_get_set_fields :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetSetFields ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m [FontMask]
fontDescriptionGetSetFields _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_set_fields _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_size" pango_font_description_get_size :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO Int32


fontDescriptionGetSize ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Int32
fontDescriptionGetSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_size _obj'
    touchManagedPtr _obj
    return result

-- method FontDescription::get_size_is_absolute
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_size_is_absolute" pango_font_description_get_size_is_absolute :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CInt


fontDescriptionGetSizeIsAbsolute ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Bool
fontDescriptionGetSizeIsAbsolute _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_size_is_absolute _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_stretch
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Stretch"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_stretch" pango_font_description_get_stretch :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetStretch ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Stretch
fontDescriptionGetStretch _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_stretch _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Style"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_style" pango_font_description_get_style :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetStyle ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Style
fontDescriptionGetStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_style _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_variant
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Variant"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_variant" pango_font_description_get_variant :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetVariant ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Variant
fontDescriptionGetVariant _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_variant _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::get_weight
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Weight"
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_get_weight" pango_font_description_get_weight :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CUInt


fontDescriptionGetWeight ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Weight
fontDescriptionGetWeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_get_weight _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method FontDescription::hash
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_hash" pango_font_description_hash :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO Word32


fontDescriptionHash ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m Word32
fontDescriptionHash _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_hash _obj'
    touchManagedPtr _obj
    return result

-- method FontDescription::merge
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_merge" pango_font_description_merge :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
    CInt ->                                 -- replace_existing : TBasicType TBoolean
    IO ()


fontDescriptionMerge ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Maybe (FontDescription) ->              -- desc_to_merge
    Bool ->                                 -- replace_existing
    m ()
fontDescriptionMerge _obj desc_to_merge replace_existing = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    maybeDesc_to_merge <- case desc_to_merge of
        Nothing -> return nullPtr
        Just jDesc_to_merge -> do
            let jDesc_to_merge' = unsafeManagedPtrGetPtr jDesc_to_merge
            return jDesc_to_merge'
    let replace_existing' = (fromIntegral . fromEnum) replace_existing
    pango_font_description_merge _obj' maybeDesc_to_merge replace_existing'
    touchManagedPtr _obj
    whenJust desc_to_merge touchManagedPtr
    return ()

-- method FontDescription::merge_static
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_merge_static" pango_font_description_merge_static :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
    CInt ->                                 -- replace_existing : TBasicType TBoolean
    IO ()


fontDescriptionMergeStatic ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    FontDescription ->                      -- desc_to_merge
    Bool ->                                 -- replace_existing
    m ()
fontDescriptionMergeStatic _obj desc_to_merge replace_existing = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let desc_to_merge' = unsafeManagedPtrGetPtr desc_to_merge
    let replace_existing' = (fromIntegral . fromEnum) replace_existing
    pango_font_description_merge_static _obj' desc_to_merge' replace_existing'
    touchManagedPtr _obj
    touchManagedPtr desc_to_merge
    return ()

-- method FontDescription::set_absolute_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_absolute_size" pango_font_description_set_absolute_size :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CDouble ->                              -- size : TBasicType TDouble
    IO ()


fontDescriptionSetAbsoluteSize ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Double ->                               -- size
    m ()
fontDescriptionSetAbsoluteSize _obj size = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let size' = realToFrac size
    pango_font_description_set_absolute_size _obj' size'
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_family
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_family" pango_font_description_set_family :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CString ->                              -- family : TBasicType TUTF8
    IO ()


fontDescriptionSetFamily ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    T.Text ->                               -- family
    m ()
fontDescriptionSetFamily _obj family = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    family' <- textToCString family
    pango_font_description_set_family _obj' family'
    touchManagedPtr _obj
    freeMem family'
    return ()

-- method FontDescription::set_family_static
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_family_static" pango_font_description_set_family_static :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CString ->                              -- family : TBasicType TUTF8
    IO ()


fontDescriptionSetFamilyStatic ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    T.Text ->                               -- family
    m ()
fontDescriptionSetFamilyStatic _obj family = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    family' <- textToCString family
    pango_font_description_set_family_static _obj' family'
    touchManagedPtr _obj
    freeMem family'
    return ()

-- method FontDescription::set_gravity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_gravity" pango_font_description_set_gravity :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
    IO ()


fontDescriptionSetGravity ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Gravity ->                              -- gravity
    m ()
fontDescriptionSetGravity _obj gravity = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let gravity' = (fromIntegral . fromEnum) gravity
    pango_font_description_set_gravity _obj' gravity'
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_size" pango_font_description_set_size :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    Int32 ->                                -- size : TBasicType TInt32
    IO ()


fontDescriptionSetSize ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Int32 ->                                -- size
    m ()
fontDescriptionSetSize _obj size = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    pango_font_description_set_size _obj' size
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_stretch
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_stretch" pango_font_description_set_stretch :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- stretch : TInterface "Pango" "Stretch"
    IO ()


fontDescriptionSetStretch ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Stretch ->                              -- stretch
    m ()
fontDescriptionSetStretch _obj stretch = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let stretch' = (fromIntegral . fromEnum) stretch
    pango_font_description_set_stretch _obj' stretch'
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_style" pango_font_description_set_style :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- style : TInterface "Pango" "Style"
    IO ()


fontDescriptionSetStyle ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Style ->                                -- style
    m ()
fontDescriptionSetStyle _obj style = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let style' = (fromIntegral . fromEnum) style
    pango_font_description_set_style _obj' style'
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_variant
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_variant" pango_font_description_set_variant :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- variant : TInterface "Pango" "Variant"
    IO ()


fontDescriptionSetVariant ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Variant ->                              -- variant
    m ()
fontDescriptionSetVariant _obj variant = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let variant' = (fromIntegral . fromEnum) variant
    pango_font_description_set_variant _obj' variant'
    touchManagedPtr _obj
    return ()

-- method FontDescription::set_weight
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_set_weight" pango_font_description_set_weight :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- weight : TInterface "Pango" "Weight"
    IO ()


fontDescriptionSetWeight ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    Weight ->                               -- weight
    m ()
fontDescriptionSetWeight _obj weight = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let weight' = (fromIntegral . fromEnum) weight
    pango_font_description_set_weight _obj' weight'
    touchManagedPtr _obj
    return ()

-- method FontDescription::to_filename
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_to_filename" pango_font_description_to_filename :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CString


fontDescriptionToFilename ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m T.Text
fontDescriptionToFilename _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_to_filename _obj'
    checkUnexpectedReturnNULL "pango_font_description_to_filename" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method FontDescription::to_string
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_to_string" pango_font_description_to_string :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    IO CString


fontDescriptionToString ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    m T.Text
fontDescriptionToString _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- pango_font_description_to_string _obj'
    checkUnexpectedReturnNULL "pango_font_description_to_string" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method FontDescription::unset_fields
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "pango_font_description_unset_fields" pango_font_description_unset_fields :: 
    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
    CUInt ->                                -- to_unset : TInterface "Pango" "FontMask"
    IO ()


fontDescriptionUnsetFields ::
    (MonadIO m) =>
    FontDescription ->                      -- _obj
    [FontMask] ->                           -- to_unset
    m ()
fontDescriptionUnsetFields _obj to_unset = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let to_unset' = gflagsToWord to_unset
    pango_font_description_unset_fields _obj' to_unset'
    touchManagedPtr _obj
    return ()