diff --git a/GI/Pango.hs b/GI/Pango.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango.hs
@@ -0,0 +1,11374 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+
+module GI.Pango where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+import Data.Char
+import Data.Int
+import Data.Word
+import qualified Data.ByteString.Char8 as B
+import Data.ByteString.Char8 (ByteString)
+import qualified Data.Map as Map
+import Foreign.C
+import Foreign.Ptr
+import Foreign.ForeignPtr
+import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
+import Foreign.Storable (peek, poke, sizeOf)
+import Control.Applicative ((<$>))
+import Control.Exception (onException)
+import Control.Monad.IO.Class
+import qualified Data.Text as T
+
+import Data.GI.Base.Attributes hiding (get, set)
+import Data.GI.Base.BasicTypes
+import Data.GI.Base.BasicConversions
+import Data.GI.Base.Closure
+import Data.GI.Base.GError
+import Data.GI.Base.GHashTable
+import Data.GI.Base.GParamSpec
+import Data.GI.Base.GVariant
+import Data.GI.Base.GValue
+import Data.GI.Base.ManagedPtr
+import Data.GI.Base.Overloading
+import Data.GI.Base.Properties hiding (new)
+import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
+import Data.GI.Base.Utils
+
+import qualified GI.GLib as GLib
+import qualified GI.GLibAttributes as GLibA
+import qualified GI.GObject as GObject
+import qualified GI.GObjectAttributes as GObjectA
+
+-- Enum Alignment
+
+data Alignment = 
+      AlignmentLeft
+    | AlignmentCenter
+    | AlignmentRight
+    | AnotherAlignment Int
+    deriving (Show, Eq)
+
+instance Enum Alignment where
+    fromEnum AlignmentLeft = 0
+    fromEnum AlignmentCenter = 1
+    fromEnum AlignmentRight = 2
+    fromEnum (AnotherAlignment k) = k
+
+    toEnum 0 = AlignmentLeft
+    toEnum 1 = AlignmentCenter
+    toEnum 2 = AlignmentRight
+    toEnum k = AnotherAlignment k
+
+foreign import ccall "pango_alignment_get_type" c_pango_alignment_get_type :: 
+    IO GType
+
+instance BoxedEnum Alignment where
+    boxedEnumType _ = c_pango_alignment_get_type
+
+-- struct Analysis
+newtype Analysis = Analysis (ForeignPtr Analysis)
+noAnalysis :: Maybe Analysis
+noAnalysis = Nothing
+
+analysisReadShapeEngine :: Analysis -> IO EngineShape
+analysisReadShapeEngine s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EngineShape)
+    val' <- (newObject EngineShape) val
+    return val'
+
+analysisReadLangEngine :: Analysis -> IO EngineLang
+analysisReadLangEngine s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO (Ptr EngineLang)
+    val' <- (newObject EngineLang) val
+    return val'
+
+analysisReadFont :: Analysis -> IO Font
+analysisReadFont s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Font)
+    val' <- (newObject Font) val
+    return val'
+
+analysisReadLevel :: Analysis -> IO Word8
+analysisReadLevel s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO Word8
+    return val
+
+analysisReadGravity :: Analysis -> IO Word8
+analysisReadGravity s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 25) :: IO Word8
+    return val
+
+analysisReadFlags :: Analysis -> IO Word8
+analysisReadFlags s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 26) :: IO Word8
+    return val
+
+analysisReadScript :: Analysis -> IO Word8
+analysisReadScript s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 27) :: IO Word8
+    return val
+
+analysisReadLanguage :: Analysis -> IO Language
+analysisReadLanguage s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Language)
+    val' <- (newBoxed Language) val
+    return val'
+
+analysisReadExtraAttrs :: Analysis -> IO ([Ptr ()])
+analysisReadExtraAttrs s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 40) :: IO (Ptr (GSList (Ptr ())))
+    val' <- unpackGSList val
+    return val'
+
+-- struct AttrClass
+newtype AttrClass = AttrClass (ForeignPtr AttrClass)
+noAttrClass :: Maybe AttrClass
+noAttrClass = Nothing
+
+attrClassReadType :: AttrClass -> IO AttrType
+attrClassReadType s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CUInt
+    let val' = (toEnum . fromIntegral) val
+    return val'
+
+-- XXX Skipped getter for "AttrClass:destroy" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- XXX Skipped getter for "AttrClass:equal" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- struct AttrColor
+newtype AttrColor = AttrColor (ForeignPtr AttrColor)
+noAttrColor :: Maybe AttrColor
+noAttrColor = Nothing
+
+attrColorReadAttr :: AttrColor -> IO Attribute
+attrColorReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrColorReadColor :: AttrColor -> IO Color
+attrColorReadColor s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Color)
+    val' <- (newBoxed Color) val
+    return val'
+
+-- callback AttrFilterFunc
+attrFilterFuncClosure :: AttrFilterFunc -> IO Closure
+attrFilterFuncClosure cb = newCClosure =<< mkAttrFilterFunc wrapped
+    where wrapped = attrFilterFuncWrapper Nothing cb
+
+type AttrFilterFuncC =
+    Ptr Attribute ->
+    Ptr () ->
+    IO CInt
+
+foreign import ccall "wrapper"
+    mkAttrFilterFunc :: AttrFilterFuncC -> IO (FunPtr AttrFilterFuncC)
+
+type AttrFilterFunc =
+    Attribute ->
+    IO Bool
+
+noAttrFilterFunc :: Maybe AttrFilterFunc
+noAttrFilterFunc = Nothing
+
+attrFilterFuncWrapper ::
+    Maybe (Ptr (FunPtr (AttrFilterFuncC))) ->
+    AttrFilterFunc ->
+    Ptr Attribute ->
+    Ptr () ->
+    IO CInt
+attrFilterFuncWrapper funptrptr _cb attribute _ = do
+    attribute' <- (newPtr 16 Attribute) attribute
+    result <- _cb  attribute'
+    maybeReleaseFunPtr funptrptr
+    let result' = (fromIntegral . fromEnum) result
+    return result'
+
+-- struct AttrFloat
+newtype AttrFloat = AttrFloat (ForeignPtr AttrFloat)
+noAttrFloat :: Maybe AttrFloat
+noAttrFloat = Nothing
+
+attrFloatReadAttr :: AttrFloat -> IO Attribute
+attrFloatReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrFloatReadValue :: AttrFloat -> IO Double
+attrFloatReadValue s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+-- struct AttrFontDesc
+newtype AttrFontDesc = AttrFontDesc (ForeignPtr AttrFontDesc)
+noAttrFontDesc :: Maybe AttrFontDesc
+noAttrFontDesc = Nothing
+
+attrFontDescReadAttr :: AttrFontDesc -> IO Attribute
+attrFontDescReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrFontDescReadDesc :: AttrFontDesc -> IO FontDescription
+attrFontDescReadDesc s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr FontDescription)
+    val' <- (newBoxed FontDescription) val
+    return val'
+
+-- struct AttrInt
+newtype AttrInt = AttrInt (ForeignPtr AttrInt)
+noAttrInt :: Maybe AttrInt
+noAttrInt = Nothing
+
+attrIntReadAttr :: AttrInt -> IO Attribute
+attrIntReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrIntReadValue :: AttrInt -> IO Int32
+attrIntReadValue s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Int32
+    return val
+
+-- struct AttrIterator
+newtype AttrIterator = AttrIterator (ForeignPtr AttrIterator)
+noAttrIterator :: Maybe AttrIterator
+noAttrIterator = Nothing
+
+-- method AttrIterator::destroy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_iterator_destroy" pango_attr_iterator_destroy :: 
+    Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
+    IO ()
+
+
+attrIteratorDestroy ::
+    (MonadIO m) =>
+    AttrIterator ->                         -- _obj
+    m ()
+attrIteratorDestroy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_attr_iterator_destroy _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method AttrIterator::get_attrs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGSList (TInterface "Pango" "Attribute")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_iterator_get_attrs" pango_attr_iterator_get_attrs :: 
+    Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
+    IO (Ptr (GSList (Ptr Attribute)))
+
+
+attrIteratorGetAttrs ::
+    (MonadIO m) =>
+    AttrIterator ->                         -- _obj
+    m [Attribute]
+attrIteratorGetAttrs _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_attr_iterator_get_attrs _obj'
+    result' <- unpackGSList result
+    result'' <- mapM (wrapPtr Attribute) result'
+    g_slist_free result
+    touchManagedPtr _obj
+    return result''
+
+-- method AttrIterator::get_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extra_attrs", argType = TGSList (TInterface "Pango" "Attribute"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extra_attrs", argType = TGSList (TInterface "Pango" "Attribute"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_iterator_get_font" pango_attr_iterator_get_font :: 
+    Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    Ptr (GSList (Ptr Attribute)) ->         -- extra_attrs : TGSList (TInterface "Pango" "Attribute")
+    IO ()
+
+
+attrIteratorGetFont ::
+    (MonadIO m) =>
+    AttrIterator ->                         -- _obj
+    FontDescription ->                      -- desc
+    Maybe (Language) ->                     -- language
+    [Attribute] ->                          -- extra_attrs
+    m ()
+attrIteratorGetFont _obj desc language extra_attrs = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let desc' = unsafeManagedPtrGetPtr desc
+    maybeLanguage <- case language of
+        Nothing -> return nullPtr
+        Just jLanguage -> do
+            let jLanguage' = unsafeManagedPtrGetPtr jLanguage
+            return jLanguage'
+    let extra_attrs' = map unsafeManagedPtrGetPtr extra_attrs
+    extra_attrs'' <- packGSList extra_attrs'
+    pango_attr_iterator_get_font _obj' desc' maybeLanguage extra_attrs''
+    touchManagedPtr _obj
+    touchManagedPtr desc
+    whenJust language touchManagedPtr
+    mapM_ touchManagedPtr extra_attrs
+    return ()
+
+-- method AttrIterator::next
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_iterator_next" pango_attr_iterator_next :: 
+    Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
+    IO CInt
+
+
+attrIteratorNext ::
+    (MonadIO m) =>
+    AttrIterator ->                         -- _obj
+    m Bool
+attrIteratorNext _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_attr_iterator_next _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method AttrIterator::range
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "end", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_iterator_range" pango_attr_iterator_range :: 
+    Ptr AttrIterator ->                     -- _obj : TInterface "Pango" "AttrIterator"
+    Ptr Int32 ->                            -- start : TBasicType TInt32
+    Ptr Int32 ->                            -- end : TBasicType TInt32
+    IO ()
+
+
+attrIteratorRange ::
+    (MonadIO m) =>
+    AttrIterator ->                         -- _obj
+    m (Int32,Int32)
+attrIteratorRange _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    start <- allocMem :: IO (Ptr Int32)
+    end <- allocMem :: IO (Ptr Int32)
+    pango_attr_iterator_range _obj' start end
+    start' <- peek start
+    end' <- peek end
+    touchManagedPtr _obj
+    freeMem start
+    freeMem end
+    return (start', end')
+
+-- struct AttrLanguage
+newtype AttrLanguage = AttrLanguage (ForeignPtr AttrLanguage)
+noAttrLanguage :: Maybe AttrLanguage
+noAttrLanguage = Nothing
+
+attrLanguageReadAttr :: AttrLanguage -> IO Attribute
+attrLanguageReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrLanguageReadValue :: AttrLanguage -> IO Language
+attrLanguageReadValue s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Language)
+    val' <- (newBoxed Language) val
+    return val'
+
+-- struct AttrList
+newtype AttrList = AttrList (ForeignPtr AttrList)
+noAttrList :: Maybe AttrList
+noAttrList = Nothing
+
+foreign import ccall "pango_attr_list_get_type" c_pango_attr_list_get_type :: 
+    IO GType
+
+instance BoxedObject AttrList where
+    boxedType _ = c_pango_attr_list_get_type
+
+-- method AttrList::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "AttrList"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_new" pango_attr_list_new :: 
+    IO (Ptr AttrList)
+
+
+attrListNew ::
+    (MonadIO m) =>
+    m AttrList
+attrListNew  = liftIO $ do
+    result <- pango_attr_list_new
+    result' <- (wrapBoxed AttrList) result
+    return result'
+
+-- method AttrList::change
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_change" pango_attr_list_change :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    Ptr Attribute ->                        -- attr : TInterface "Pango" "Attribute"
+    IO ()
+
+
+attrListChange ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    Attribute ->                            -- attr
+    m ()
+attrListChange _obj attr = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let attr' = unsafeManagedPtrGetPtr attr
+    pango_attr_list_change _obj' attr'
+    touchManagedPtr _obj
+    touchManagedPtr attr
+    return ()
+
+-- method AttrList::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "AttrList"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_copy" pango_attr_list_copy :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    IO (Ptr AttrList)
+
+
+attrListCopy ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    m AttrList
+attrListCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_attr_list_copy _obj'
+    result' <- (wrapBoxed AttrList) result
+    touchManagedPtr _obj
+    return result'
+
+-- method AttrList::filter
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "func", argType = TInterface "Pango" "AttrFilterFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "func", argType = TInterface "Pango" "AttrFilterFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "AttrList"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_filter" pango_attr_list_filter :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    FunPtr AttrFilterFuncC ->               -- func : TInterface "Pango" "AttrFilterFunc"
+    Ptr () ->                               -- data : TBasicType TVoid
+    IO (Ptr AttrList)
+
+
+attrListFilter ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    AttrFilterFunc ->                       -- func
+    m AttrList
+attrListFilter _obj func = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    func' <- mkAttrFilterFunc (attrFilterFuncWrapper Nothing func)
+    let data_ = nullPtr
+    result <- pango_attr_list_filter _obj' func' data_
+    result' <- (wrapBoxed AttrList) result
+    safeFreeFunPtr $ castFunPtrToPtr func'
+    touchManagedPtr _obj
+    return result'
+
+-- method AttrList::insert
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_insert" pango_attr_list_insert :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    Ptr Attribute ->                        -- attr : TInterface "Pango" "Attribute"
+    IO ()
+
+
+attrListInsert ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    Attribute ->                            -- attr
+    m ()
+attrListInsert _obj attr = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let attr' = unsafeManagedPtrGetPtr attr
+    pango_attr_list_insert _obj' attr'
+    touchManagedPtr _obj
+    touchManagedPtr attr
+    return ()
+
+-- method AttrList::insert_before
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_insert_before" pango_attr_list_insert_before :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    Ptr Attribute ->                        -- attr : TInterface "Pango" "Attribute"
+    IO ()
+
+
+attrListInsertBefore ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    Attribute ->                            -- attr
+    m ()
+attrListInsertBefore _obj attr = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let attr' = unsafeManagedPtrGetPtr attr
+    pango_attr_list_insert_before _obj' attr'
+    touchManagedPtr _obj
+    touchManagedPtr attr
+    return ()
+
+-- method AttrList::ref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "AttrList"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_ref" pango_attr_list_ref :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    IO (Ptr AttrList)
+
+
+attrListRef ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    m AttrList
+attrListRef _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_attr_list_ref _obj'
+    result' <- (wrapBoxed AttrList) result
+    touchManagedPtr _obj
+    return result'
+
+-- method AttrList::splice
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "other", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "other", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "len", 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_attr_list_splice" pango_attr_list_splice :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    Ptr AttrList ->                         -- other : TInterface "Pango" "AttrList"
+    Int32 ->                                -- pos : TBasicType TInt32
+    Int32 ->                                -- len : TBasicType TInt32
+    IO ()
+
+
+attrListSplice ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    AttrList ->                             -- other
+    Int32 ->                                -- pos
+    Int32 ->                                -- len
+    m ()
+attrListSplice _obj other pos len = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let other' = unsafeManagedPtrGetPtr other
+    pango_attr_list_splice _obj' other' pos len
+    touchManagedPtr _obj
+    touchManagedPtr other
+    return ()
+
+-- method AttrList::unref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_list_unref" pango_attr_list_unref :: 
+    Ptr AttrList ->                         -- _obj : TInterface "Pango" "AttrList"
+    IO ()
+
+
+attrListUnref ::
+    (MonadIO m) =>
+    AttrList ->                             -- _obj
+    m ()
+attrListUnref _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_attr_list_unref _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- struct AttrShape
+newtype AttrShape = AttrShape (ForeignPtr AttrShape)
+noAttrShape :: Maybe AttrShape
+noAttrShape = Nothing
+
+attrShapeReadAttr :: AttrShape -> IO Attribute
+attrShapeReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrShapeReadInkRect :: AttrShape -> IO Rectangle
+attrShapeReadInkRect s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Rectangle)
+    val' <- (newPtr 16 Rectangle) val
+    return val'
+
+attrShapeReadLogicalRect :: AttrShape -> IO Rectangle
+attrShapeReadLogicalRect s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Rectangle)
+    val' <- (newPtr 16 Rectangle) val
+    return val'
+
+attrShapeReadData :: AttrShape -> IO (Ptr ())
+attrShapeReadData s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 48) :: IO (Ptr ())
+    return val
+
+-- XXX Skipped getter for "AttrShape:destroy_func" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- struct AttrSize
+newtype AttrSize = AttrSize (ForeignPtr AttrSize)
+noAttrSize :: Maybe AttrSize
+noAttrSize = Nothing
+
+attrSizeReadAttr :: AttrSize -> IO Attribute
+attrSizeReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrSizeReadSize :: AttrSize -> IO Int32
+attrSizeReadSize s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Int32
+    return val
+
+attrSizeReadAbsolute :: AttrSize -> IO Word32
+attrSizeReadAbsolute s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 20) :: IO Word32
+    return val
+
+-- struct AttrString
+newtype AttrString = AttrString (ForeignPtr AttrString)
+noAttrString :: Maybe AttrString
+noAttrString = Nothing
+
+attrStringReadAttr :: AttrString -> IO Attribute
+attrStringReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
+    val' <- (newPtr 16 Attribute) val
+    return val'
+
+attrStringReadValue :: AttrString -> IO T.Text
+attrStringReadValue s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+-- Enum AttrType
+
+data AttrType = 
+      AttrTypeInvalid
+    | AttrTypeLanguage
+    | AttrTypeFamily
+    | AttrTypeStyle
+    | AttrTypeWeight
+    | AttrTypeVariant
+    | AttrTypeStretch
+    | AttrTypeSize
+    | AttrTypeFontDesc
+    | AttrTypeForeground
+    | AttrTypeBackground
+    | AttrTypeUnderline
+    | AttrTypeStrikethrough
+    | AttrTypeRise
+    | AttrTypeShape
+    | AttrTypeScale
+    | AttrTypeFallback
+    | AttrTypeLetterSpacing
+    | AttrTypeUnderlineColor
+    | AttrTypeStrikethroughColor
+    | AttrTypeAbsoluteSize
+    | AttrTypeGravity
+    | AttrTypeGravityHint
+    | AnotherAttrType Int
+    deriving (Show, Eq)
+
+instance Enum AttrType where
+    fromEnum AttrTypeInvalid = 0
+    fromEnum AttrTypeLanguage = 1
+    fromEnum AttrTypeFamily = 2
+    fromEnum AttrTypeStyle = 3
+    fromEnum AttrTypeWeight = 4
+    fromEnum AttrTypeVariant = 5
+    fromEnum AttrTypeStretch = 6
+    fromEnum AttrTypeSize = 7
+    fromEnum AttrTypeFontDesc = 8
+    fromEnum AttrTypeForeground = 9
+    fromEnum AttrTypeBackground = 10
+    fromEnum AttrTypeUnderline = 11
+    fromEnum AttrTypeStrikethrough = 12
+    fromEnum AttrTypeRise = 13
+    fromEnum AttrTypeShape = 14
+    fromEnum AttrTypeScale = 15
+    fromEnum AttrTypeFallback = 16
+    fromEnum AttrTypeLetterSpacing = 17
+    fromEnum AttrTypeUnderlineColor = 18
+    fromEnum AttrTypeStrikethroughColor = 19
+    fromEnum AttrTypeAbsoluteSize = 20
+    fromEnum AttrTypeGravity = 21
+    fromEnum AttrTypeGravityHint = 22
+    fromEnum (AnotherAttrType k) = k
+
+    toEnum 0 = AttrTypeInvalid
+    toEnum 1 = AttrTypeLanguage
+    toEnum 2 = AttrTypeFamily
+    toEnum 3 = AttrTypeStyle
+    toEnum 4 = AttrTypeWeight
+    toEnum 5 = AttrTypeVariant
+    toEnum 6 = AttrTypeStretch
+    toEnum 7 = AttrTypeSize
+    toEnum 8 = AttrTypeFontDesc
+    toEnum 9 = AttrTypeForeground
+    toEnum 10 = AttrTypeBackground
+    toEnum 11 = AttrTypeUnderline
+    toEnum 12 = AttrTypeStrikethrough
+    toEnum 13 = AttrTypeRise
+    toEnum 14 = AttrTypeShape
+    toEnum 15 = AttrTypeScale
+    toEnum 16 = AttrTypeFallback
+    toEnum 17 = AttrTypeLetterSpacing
+    toEnum 18 = AttrTypeUnderlineColor
+    toEnum 19 = AttrTypeStrikethroughColor
+    toEnum 20 = AttrTypeAbsoluteSize
+    toEnum 21 = AttrTypeGravity
+    toEnum 22 = AttrTypeGravityHint
+    toEnum k = AnotherAttrType k
+
+foreign import ccall "pango_attr_type_get_type" c_pango_attr_type_get_type :: 
+    IO GType
+
+instance BoxedEnum AttrType where
+    boxedEnumType _ = c_pango_attr_type_get_type
+
+-- struct Attribute
+newtype Attribute = Attribute (ForeignPtr Attribute)
+noAttribute :: Maybe Attribute
+noAttribute = Nothing
+
+attributeReadKlass :: Attribute -> IO AttrClass
+attributeReadKlass s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr AttrClass)
+    val' <- (newPtr 32 AttrClass) val
+    return val'
+
+attributeReadStartIndex :: Attribute -> IO Word32
+attributeReadStartIndex s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Word32
+    return val
+
+attributeReadEndIndex :: Attribute -> IO Word32
+attributeReadEndIndex s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 12) :: IO Word32
+    return val
+
+-- method Attribute::destroy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attribute_destroy" pango_attribute_destroy :: 
+    Ptr Attribute ->                        -- _obj : TInterface "Pango" "Attribute"
+    IO ()
+
+
+attributeDestroy ::
+    (MonadIO m) =>
+    Attribute ->                            -- _obj
+    m ()
+attributeDestroy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_attribute_destroy _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Attribute::equal
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr2", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr2", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attribute_equal" pango_attribute_equal :: 
+    Ptr Attribute ->                        -- _obj : TInterface "Pango" "Attribute"
+    Ptr Attribute ->                        -- attr2 : TInterface "Pango" "Attribute"
+    IO CInt
+
+
+attributeEqual ::
+    (MonadIO m) =>
+    Attribute ->                            -- _obj
+    Attribute ->                            -- attr2
+    m Bool
+attributeEqual _obj attr2 = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let attr2' = unsafeManagedPtrGetPtr attr2
+    result <- pango_attribute_equal _obj' attr2'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    touchManagedPtr attr2
+    return result'
+
+-- method Attribute::init
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "klass", argType = TInterface "Pango" "AttrClass", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Attribute", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "klass", argType = TInterface "Pango" "AttrClass", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attribute_init" pango_attribute_init :: 
+    Ptr Attribute ->                        -- _obj : TInterface "Pango" "Attribute"
+    Ptr AttrClass ->                        -- klass : TInterface "Pango" "AttrClass"
+    IO ()
+
+
+attributeInit ::
+    (MonadIO m) =>
+    Attribute ->                            -- _obj
+    AttrClass ->                            -- klass
+    m ()
+attributeInit _obj klass = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let klass' = unsafeManagedPtrGetPtr klass
+    pango_attribute_init _obj' klass'
+    touchManagedPtr _obj
+    touchManagedPtr klass
+    return ()
+
+-- Enum BidiType
+
+data BidiType = 
+      BidiTypeL
+    | BidiTypeLre
+    | BidiTypeLro
+    | BidiTypeR
+    | BidiTypeAl
+    | BidiTypeRle
+    | BidiTypeRlo
+    | BidiTypePdf
+    | BidiTypeEn
+    | BidiTypeEs
+    | BidiTypeEt
+    | BidiTypeAn
+    | BidiTypeCs
+    | BidiTypeNsm
+    | BidiTypeBn
+    | BidiTypeB
+    | BidiTypeS
+    | BidiTypeWs
+    | BidiTypeOn
+    | AnotherBidiType Int
+    deriving (Show, Eq)
+
+instance Enum BidiType where
+    fromEnum BidiTypeL = 0
+    fromEnum BidiTypeLre = 1
+    fromEnum BidiTypeLro = 2
+    fromEnum BidiTypeR = 3
+    fromEnum BidiTypeAl = 4
+    fromEnum BidiTypeRle = 5
+    fromEnum BidiTypeRlo = 6
+    fromEnum BidiTypePdf = 7
+    fromEnum BidiTypeEn = 8
+    fromEnum BidiTypeEs = 9
+    fromEnum BidiTypeEt = 10
+    fromEnum BidiTypeAn = 11
+    fromEnum BidiTypeCs = 12
+    fromEnum BidiTypeNsm = 13
+    fromEnum BidiTypeBn = 14
+    fromEnum BidiTypeB = 15
+    fromEnum BidiTypeS = 16
+    fromEnum BidiTypeWs = 17
+    fromEnum BidiTypeOn = 18
+    fromEnum (AnotherBidiType k) = k
+
+    toEnum 0 = BidiTypeL
+    toEnum 1 = BidiTypeLre
+    toEnum 2 = BidiTypeLro
+    toEnum 3 = BidiTypeR
+    toEnum 4 = BidiTypeAl
+    toEnum 5 = BidiTypeRle
+    toEnum 6 = BidiTypeRlo
+    toEnum 7 = BidiTypePdf
+    toEnum 8 = BidiTypeEn
+    toEnum 9 = BidiTypeEs
+    toEnum 10 = BidiTypeEt
+    toEnum 11 = BidiTypeAn
+    toEnum 12 = BidiTypeCs
+    toEnum 13 = BidiTypeNsm
+    toEnum 14 = BidiTypeBn
+    toEnum 15 = BidiTypeB
+    toEnum 16 = BidiTypeS
+    toEnum 17 = BidiTypeWs
+    toEnum 18 = BidiTypeOn
+    toEnum k = AnotherBidiType k
+
+foreign import ccall "pango_bidi_type_get_type" c_pango_bidi_type_get_type :: 
+    IO GType
+
+instance BoxedEnum BidiType where
+    boxedEnumType _ = c_pango_bidi_type_get_type
+
+-- struct Color
+newtype Color = Color (ForeignPtr Color)
+noColor :: Maybe Color
+noColor = Nothing
+
+foreign import ccall "pango_color_get_type" c_pango_color_get_type :: 
+    IO GType
+
+instance BoxedObject Color where
+    boxedType _ = c_pango_color_get_type
+
+colorReadRed :: Color -> IO Word16
+colorReadRed s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word16
+    return val
+
+colorReadGreen :: Color -> IO Word16
+colorReadGreen s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 2) :: IO Word16
+    return val
+
+colorReadBlue :: Color -> IO Word16
+colorReadBlue s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Word16
+    return val
+
+-- method Color::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Color"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_color_copy" pango_color_copy :: 
+    Ptr Color ->                            -- _obj : TInterface "Pango" "Color"
+    IO (Ptr Color)
+
+
+colorCopy ::
+    (MonadIO m) =>
+    Color ->                                -- _obj
+    m Color
+colorCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_color_copy _obj'
+    result' <- (wrapBoxed Color) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Color::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_color_free" pango_color_free :: 
+    Ptr Color ->                            -- _obj : TInterface "Pango" "Color"
+    IO ()
+
+
+colorFree ::
+    (MonadIO m) =>
+    Color ->                                -- _obj
+    m ()
+colorFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_color_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Color::parse
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spec", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_color_parse" pango_color_parse :: 
+    Ptr Color ->                            -- _obj : TInterface "Pango" "Color"
+    CString ->                              -- spec : TBasicType TUTF8
+    IO CInt
+
+
+colorParse ::
+    (MonadIO m) =>
+    Color ->                                -- _obj
+    T.Text ->                               -- spec
+    m Bool
+colorParse _obj spec = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    spec' <- textToCString spec
+    result <- pango_color_parse _obj' spec'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    freeMem spec'
+    return result'
+
+-- method Color::to_string
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_color_to_string" pango_color_to_string :: 
+    Ptr Color ->                            -- _obj : TInterface "Pango" "Color"
+    IO CString
+
+
+colorToString ::
+    (MonadIO m) =>
+    Color ->                                -- _obj
+    m T.Text
+colorToString _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_color_to_string _obj'
+    result' <- cstringToText result
+    freeMem result
+    touchManagedPtr _obj
+    return result'
+
+-- object Context 
+newtype Context = Context (ForeignPtr Context)
+noContext :: Maybe Context
+noContext = Nothing
+
+foreign import ccall "pango_context_get_type"
+    c_pango_context_get_type :: IO GType
+
+type instance ParentTypes Context = '[GObject.Object]
+
+instance GObject Context where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_context_get_type
+    
+
+class GObject o => ContextK o
+instance (GObject o, IsDescendantOf Context o) => ContextK o
+
+toContext :: ContextK o => o -> IO Context
+toContext = unsafeCastTo Context
+
+-- method Context::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "Context"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_new" pango_context_new :: 
+    IO (Ptr Context)
+
+
+contextNew ::
+    (MonadIO m) =>
+    m Context
+contextNew  = liftIO $ do
+    result <- pango_context_new
+    result' <- (wrapObject Context) result
+    return result'
+
+-- method Context::changed
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_changed" pango_context_changed :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO ()
+
+
+contextChanged ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m ()
+contextChanged _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_context_changed _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Context::get_base_dir
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Direction"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_base_dir" pango_context_get_base_dir :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO CUInt
+
+
+contextGetBaseDir ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Direction
+contextGetBaseDir _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_base_dir _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_base_gravity
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", 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_context_get_base_gravity" pango_context_get_base_gravity :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO CUInt
+
+
+contextGetBaseGravity ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Gravity
+contextGetBaseGravity _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_base_gravity _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_font_description
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", 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_context_get_font_description" pango_context_get_font_description :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO (Ptr FontDescription)
+
+
+contextGetFontDescription ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m FontDescription
+contextGetFontDescription _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_font_description _obj'
+    result' <- (newBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_font_map
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMap"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_font_map" pango_context_get_font_map :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO (Ptr FontMap)
+
+
+contextGetFontMap ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m FontMap
+contextGetFontMap _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_font_map _obj'
+    result' <- (newObject FontMap) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_gravity
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", 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_context_get_gravity" pango_context_get_gravity :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO CUInt
+
+
+contextGetGravity ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Gravity
+contextGetGravity _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_gravity _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_gravity_hint
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GravityHint"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_gravity_hint" pango_context_get_gravity_hint :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO CUInt
+
+
+contextGetGravityHint ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m GravityHint
+contextGetGravityHint _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_gravity_hint _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_language
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Language"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_language" pango_context_get_language :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO (Ptr Language)
+
+
+contextGetLanguage ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Language
+contextGetLanguage _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_language _obj'
+    result' <- (wrapBoxed Language) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_matrix
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Matrix"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_matrix" pango_context_get_matrix :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO (Ptr Matrix)
+
+
+contextGetMatrix ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Matrix
+contextGetMatrix _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_matrix _obj'
+    result' <- (newBoxed Matrix) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Context::get_metrics
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMetrics"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_metrics" pango_context_get_metrics :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr FontMetrics)
+
+
+contextGetMetrics ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    Maybe (FontDescription) ->              -- desc
+    Maybe (Language) ->                     -- language
+    m FontMetrics
+contextGetMetrics _obj desc language = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeDesc <- case desc of
+        Nothing -> return nullPtr
+        Just jDesc -> do
+            let jDesc' = unsafeManagedPtrGetPtr jDesc
+            return jDesc'
+    maybeLanguage <- case language of
+        Nothing -> return nullPtr
+        Just jLanguage -> do
+            let jLanguage' = unsafeManagedPtrGetPtr jLanguage
+            return jLanguage'
+    result <- pango_context_get_metrics _obj' maybeDesc maybeLanguage
+    result' <- (wrapBoxed FontMetrics) result
+    touchManagedPtr _obj
+    whenJust desc touchManagedPtr
+    whenJust language touchManagedPtr
+    return result'
+
+-- method Context::get_serial
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_get_serial" pango_context_get_serial :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    IO Word32
+
+
+contextGetSerial ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m Word32
+contextGetSerial _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_context_get_serial _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Context::list_families
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer},Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_list_families" pango_context_list_families :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr (Ptr (Ptr FontFamily)) ->           -- families : TCArray False (-1) 2 (TInterface "Pango" "FontFamily")
+    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    IO ()
+
+
+contextListFamilies ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    m ([FontFamily])
+contextListFamilies _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    families <- allocMem :: IO (Ptr (Ptr (Ptr FontFamily)))
+    n_families <- allocMem :: IO (Ptr Int32)
+    pango_context_list_families _obj' families n_families
+    n_families' <- peek n_families
+    families' <- peek families
+    families'' <- (unpackPtrArrayWithLength n_families') families'
+    families''' <- mapM (newObject FontFamily) families''
+    freeMem families'
+    touchManagedPtr _obj
+    freeMem families
+    freeMem n_families
+    return families'''
+
+-- method Context::load_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Font"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_load_font" pango_context_load_font :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    IO (Ptr Font)
+
+
+contextLoadFont ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    FontDescription ->                      -- desc
+    m Font
+contextLoadFont _obj desc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let desc' = unsafeManagedPtrGetPtr desc
+    result <- pango_context_load_font _obj' desc'
+    result' <- (wrapObject Font) result
+    touchManagedPtr _obj
+    touchManagedPtr desc
+    return result'
+
+-- method Context::load_fontset
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Fontset"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_load_fontset" pango_context_load_fontset :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr Fontset)
+
+
+contextLoadFontset ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    FontDescription ->                      -- desc
+    Language ->                             -- language
+    m Fontset
+contextLoadFontset _obj desc language = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let desc' = unsafeManagedPtrGetPtr desc
+    let language' = unsafeManagedPtrGetPtr language
+    result <- pango_context_load_fontset _obj' desc' language'
+    result' <- (wrapObject Fontset) result
+    touchManagedPtr _obj
+    touchManagedPtr desc
+    touchManagedPtr language
+    return result'
+
+-- method Context::set_base_dir
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_set_base_dir" pango_context_set_base_dir :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    CUInt ->                                -- direction : TInterface "Pango" "Direction"
+    IO ()
+
+
+contextSetBaseDir ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    Direction ->                            -- direction
+    m ()
+contextSetBaseDir _obj direction = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let direction' = (fromIntegral . fromEnum) direction
+    pango_context_set_base_dir _obj' direction'
+    touchManagedPtr _obj
+    return ()
+
+-- method Context::set_base_gravity
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", 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" "Context", 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_context_set_base_gravity" pango_context_set_base_gravity :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
+    IO ()
+
+
+contextSetBaseGravity ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    Gravity ->                              -- gravity
+    m ()
+contextSetBaseGravity _obj gravity = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let gravity' = (fromIntegral . fromEnum) gravity
+    pango_context_set_base_gravity _obj' gravity'
+    touchManagedPtr _obj
+    return ()
+
+-- method Context::set_font_description
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", 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_context_set_font_description" pango_context_set_font_description :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    IO ()
+
+
+contextSetFontDescription ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    FontDescription ->                      -- desc
+    m ()
+contextSetFontDescription _obj desc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let desc' = unsafeManagedPtrGetPtr desc
+    pango_context_set_font_description _obj' desc'
+    touchManagedPtr _obj
+    touchManagedPtr desc
+    return ()
+
+-- method Context::set_font_map
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_map", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_map", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_set_font_map" pango_context_set_font_map :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr FontMap ->                          -- font_map : TInterface "Pango" "FontMap"
+    IO ()
+
+
+contextSetFontMap ::
+    (MonadIO m, ContextK a, FontMapK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- font_map
+    m ()
+contextSetFontMap _obj font_map = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let font_map' = unsafeManagedPtrCastPtr font_map
+    pango_context_set_font_map _obj' font_map'
+    touchManagedPtr _obj
+    touchManagedPtr font_map
+    return ()
+
+-- method Context::set_gravity_hint
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_set_gravity_hint" pango_context_set_gravity_hint :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    CUInt ->                                -- hint : TInterface "Pango" "GravityHint"
+    IO ()
+
+
+contextSetGravityHint ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    GravityHint ->                          -- hint
+    m ()
+contextSetGravityHint _obj hint = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let hint' = (fromIntegral . fromEnum) hint
+    pango_context_set_gravity_hint _obj' hint'
+    touchManagedPtr _obj
+    return ()
+
+-- method Context::set_language
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_set_language" pango_context_set_language :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO ()
+
+
+contextSetLanguage ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    Language ->                             -- language
+    m ()
+contextSetLanguage _obj language = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let language' = unsafeManagedPtrGetPtr language
+    pango_context_set_language _obj' language'
+    touchManagedPtr _obj
+    touchManagedPtr language
+    return ()
+
+-- method Context::set_matrix
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_context_set_matrix" pango_context_set_matrix :: 
+    Ptr Context ->                          -- _obj : TInterface "Pango" "Context"
+    Ptr Matrix ->                           -- matrix : TInterface "Pango" "Matrix"
+    IO ()
+
+
+contextSetMatrix ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- _obj
+    Maybe (Matrix) ->                       -- matrix
+    m ()
+contextSetMatrix _obj matrix = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeMatrix <- case matrix of
+        Nothing -> return nullPtr
+        Just jMatrix -> do
+            let jMatrix' = unsafeManagedPtrGetPtr jMatrix
+            return jMatrix'
+    pango_context_set_matrix _obj' maybeMatrix
+    touchManagedPtr _obj
+    whenJust matrix touchManagedPtr
+    return ()
+
+-- struct Coverage
+newtype Coverage = Coverage (ForeignPtr Coverage)
+noCoverage :: Maybe Coverage
+noCoverage = Nothing
+
+-- method Coverage::get
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "CoverageLevel"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_coverage_get" pango_coverage_get :: 
+    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    IO CUInt
+
+
+coverageGet ::
+    (MonadIO m) =>
+    Coverage ->                             -- _obj
+    Int32 ->                                -- index_
+    m CoverageLevel
+coverageGet _obj index_ = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_coverage_get _obj' index_
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Coverage::max
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "other", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "other", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_coverage_max" pango_coverage_max :: 
+    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
+    Ptr Coverage ->                         -- other : TInterface "Pango" "Coverage"
+    IO ()
+
+
+coverageMax ::
+    (MonadIO m) =>
+    Coverage ->                             -- _obj
+    Coverage ->                             -- other
+    m ()
+coverageMax _obj other = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let other' = unsafeManagedPtrGetPtr other
+    pango_coverage_max _obj' other'
+    touchManagedPtr _obj
+    touchManagedPtr other
+    return ()
+
+-- method Coverage::set
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "level", argType = TInterface "Pango" "CoverageLevel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "level", argType = TInterface "Pango" "CoverageLevel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_coverage_set" pango_coverage_set :: 
+    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    CUInt ->                                -- level : TInterface "Pango" "CoverageLevel"
+    IO ()
+
+
+coverageSet ::
+    (MonadIO m) =>
+    Coverage ->                             -- _obj
+    Int32 ->                                -- index_
+    CoverageLevel ->                        -- level
+    m ()
+coverageSet _obj index_ level = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let level' = (fromIntegral . fromEnum) level
+    pango_coverage_set _obj' index_ level'
+    touchManagedPtr _obj
+    return ()
+
+-- method Coverage::to_bytes
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_coverage_to_bytes" pango_coverage_to_bytes :: 
+    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
+    Ptr (Ptr Word8) ->                      -- bytes : TCArray False (-1) 2 (TBasicType TUInt8)
+    Ptr Int32 ->                            -- n_bytes : TBasicType TInt32
+    IO ()
+
+
+coverageToBytes ::
+    (MonadIO m) =>
+    Coverage ->                             -- _obj
+    m (ByteString)
+coverageToBytes _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    bytes <- allocMem :: IO (Ptr (Ptr Word8))
+    n_bytes <- allocMem :: IO (Ptr Int32)
+    pango_coverage_to_bytes _obj' bytes n_bytes
+    n_bytes' <- peek n_bytes
+    bytes' <- peek bytes
+    bytes'' <- (unpackByteStringWithLength n_bytes') bytes'
+    freeMem bytes'
+    touchManagedPtr _obj
+    freeMem bytes
+    freeMem n_bytes
+    return bytes''
+
+-- method Coverage::unref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_coverage_unref" pango_coverage_unref :: 
+    Ptr Coverage ->                         -- _obj : TInterface "Pango" "Coverage"
+    IO ()
+
+
+coverageUnref ::
+    (MonadIO m) =>
+    Coverage ->                             -- _obj
+    m ()
+coverageUnref _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_coverage_unref _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- Enum CoverageLevel
+
+data CoverageLevel = 
+      CoverageLevelNone
+    | CoverageLevelFallback
+    | CoverageLevelApproximate
+    | CoverageLevelExact
+    | AnotherCoverageLevel Int
+    deriving (Show, Eq)
+
+instance Enum CoverageLevel where
+    fromEnum CoverageLevelNone = 0
+    fromEnum CoverageLevelFallback = 1
+    fromEnum CoverageLevelApproximate = 2
+    fromEnum CoverageLevelExact = 3
+    fromEnum (AnotherCoverageLevel k) = k
+
+    toEnum 0 = CoverageLevelNone
+    toEnum 1 = CoverageLevelFallback
+    toEnum 2 = CoverageLevelApproximate
+    toEnum 3 = CoverageLevelExact
+    toEnum k = AnotherCoverageLevel k
+
+foreign import ccall "pango_coverage_level_get_type" c_pango_coverage_level_get_type :: 
+    IO GType
+
+instance BoxedEnum CoverageLevel where
+    boxedEnumType _ = c_pango_coverage_level_get_type
+
+-- Enum Direction
+
+data Direction = 
+      DirectionLtr
+    | DirectionRtl
+    | DirectionTtbLtr
+    | DirectionTtbRtl
+    | DirectionWeakLtr
+    | DirectionWeakRtl
+    | DirectionNeutral
+    | AnotherDirection Int
+    deriving (Show, Eq)
+
+instance Enum Direction where
+    fromEnum DirectionLtr = 0
+    fromEnum DirectionRtl = 1
+    fromEnum DirectionTtbLtr = 2
+    fromEnum DirectionTtbRtl = 3
+    fromEnum DirectionWeakLtr = 4
+    fromEnum DirectionWeakRtl = 5
+    fromEnum DirectionNeutral = 6
+    fromEnum (AnotherDirection k) = k
+
+    toEnum 0 = DirectionLtr
+    toEnum 1 = DirectionRtl
+    toEnum 2 = DirectionTtbLtr
+    toEnum 3 = DirectionTtbRtl
+    toEnum 4 = DirectionWeakLtr
+    toEnum 5 = DirectionWeakRtl
+    toEnum 6 = DirectionNeutral
+    toEnum k = AnotherDirection k
+
+foreign import ccall "pango_direction_get_type" c_pango_direction_get_type :: 
+    IO GType
+
+instance BoxedEnum Direction where
+    boxedEnumType _ = c_pango_direction_get_type
+
+-- Enum EllipsizeMode
+
+data EllipsizeMode = 
+      EllipsizeModeNone
+    | EllipsizeModeStart
+    | EllipsizeModeMiddle
+    | EllipsizeModeEnd
+    | AnotherEllipsizeMode Int
+    deriving (Show, Eq)
+
+instance Enum EllipsizeMode where
+    fromEnum EllipsizeModeNone = 0
+    fromEnum EllipsizeModeStart = 1
+    fromEnum EllipsizeModeMiddle = 2
+    fromEnum EllipsizeModeEnd = 3
+    fromEnum (AnotherEllipsizeMode k) = k
+
+    toEnum 0 = EllipsizeModeNone
+    toEnum 1 = EllipsizeModeStart
+    toEnum 2 = EllipsizeModeMiddle
+    toEnum 3 = EllipsizeModeEnd
+    toEnum k = AnotherEllipsizeMode k
+
+foreign import ccall "pango_ellipsize_mode_get_type" c_pango_ellipsize_mode_get_type :: 
+    IO GType
+
+instance BoxedEnum EllipsizeMode where
+    boxedEnumType _ = c_pango_ellipsize_mode_get_type
+
+-- object Engine 
+newtype Engine = Engine (ForeignPtr Engine)
+noEngine :: Maybe Engine
+noEngine = Nothing
+
+foreign import ccall "pango_engine_get_type"
+    c_pango_engine_get_type :: IO GType
+
+type instance ParentTypes Engine = '[GObject.Object]
+
+instance GObject Engine where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_engine_get_type
+    
+
+class GObject o => EngineK o
+instance (GObject o, IsDescendantOf Engine o) => EngineK o
+
+toEngine :: EngineK o => o -> IO Engine
+toEngine = unsafeCastTo Engine
+
+-- struct EngineInfo
+newtype EngineInfo = EngineInfo (ForeignPtr EngineInfo)
+noEngineInfo :: Maybe EngineInfo
+noEngineInfo = Nothing
+
+engineInfoReadId :: EngineInfo -> IO T.Text
+engineInfoReadId s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+engineInfoReadEngineType :: EngineInfo -> IO T.Text
+engineInfoReadEngineType s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+engineInfoReadRenderType :: EngineInfo -> IO T.Text
+engineInfoReadRenderType s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+engineInfoReadScripts :: EngineInfo -> IO EngineScriptInfo
+engineInfoReadScripts s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO (Ptr EngineScriptInfo)
+    val' <- (newPtr 16 EngineScriptInfo) val
+    return val'
+
+engineInfoReadNScripts :: EngineInfo -> IO Int32
+engineInfoReadNScripts s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO Int32
+    return val
+
+-- object EngineLang 
+newtype EngineLang = EngineLang (ForeignPtr EngineLang)
+noEngineLang :: Maybe EngineLang
+noEngineLang = Nothing
+
+foreign import ccall "pango_engine_lang_get_type"
+    c_pango_engine_lang_get_type :: IO GType
+
+type instance ParentTypes EngineLang = '[Engine, GObject.Object]
+
+instance GObject EngineLang where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_engine_lang_get_type
+    
+
+class GObject o => EngineLangK o
+instance (GObject o, IsDescendantOf EngineLang o) => EngineLangK o
+
+toEngineLang :: EngineLangK o => o -> IO EngineLang
+toEngineLang = unsafeCastTo EngineLang
+
+-- struct EngineScriptInfo
+newtype EngineScriptInfo = EngineScriptInfo (ForeignPtr EngineScriptInfo)
+noEngineScriptInfo :: Maybe EngineScriptInfo
+noEngineScriptInfo = Nothing
+
+engineScriptInfoReadScript :: EngineScriptInfo -> IO Script
+engineScriptInfoReadScript s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CUInt
+    let val' = (toEnum . fromIntegral) val
+    return val'
+
+engineScriptInfoReadLangs :: EngineScriptInfo -> IO T.Text
+engineScriptInfoReadLangs s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+-- object EngineShape 
+newtype EngineShape = EngineShape (ForeignPtr EngineShape)
+noEngineShape :: Maybe EngineShape
+noEngineShape = Nothing
+
+foreign import ccall "pango_engine_shape_get_type"
+    c_pango_engine_shape_get_type :: IO GType
+
+type instance ParentTypes EngineShape = '[Engine, GObject.Object]
+
+instance GObject EngineShape where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_engine_shape_get_type
+    
+
+class GObject o => EngineShapeK o
+instance (GObject o, IsDescendantOf EngineShape o) => EngineShapeK o
+
+toEngineShape :: EngineShapeK o => o -> IO EngineShape
+toEngineShape = unsafeCastTo EngineShape
+
+-- object Font 
+newtype Font = Font (ForeignPtr Font)
+noFont :: Maybe Font
+noFont = Nothing
+
+foreign import ccall "pango_font_get_type"
+    c_pango_font_get_type :: IO GType
+
+type instance ParentTypes Font = '[GObject.Object]
+
+instance GObject Font where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_font_get_type
+    
+
+class GObject o => FontK o
+instance (GObject o, IsDescendantOf Font o) => FontK o
+
+toFont :: FontK o => o -> IO Font
+toFont = unsafeCastTo Font
+
+-- method Font::describe
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", 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_describe" pango_font_describe :: 
+    Ptr Font ->                             -- _obj : TInterface "Pango" "Font"
+    IO (Ptr FontDescription)
+
+
+fontDescribe ::
+    (MonadIO m, FontK a) =>
+    a ->                                    -- _obj
+    m FontDescription
+fontDescribe _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_describe _obj'
+    result' <- (wrapBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Font::describe_with_absolute_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", 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_describe_with_absolute_size" pango_font_describe_with_absolute_size :: 
+    Ptr Font ->                             -- _obj : TInterface "Pango" "Font"
+    IO (Ptr FontDescription)
+
+
+fontDescribeWithAbsoluteSize ::
+    (MonadIO m, FontK a) =>
+    a ->                                    -- _obj
+    m FontDescription
+fontDescribeWithAbsoluteSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_describe_with_absolute_size _obj'
+    result' <- (wrapBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Font::get_font_map
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMap"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_get_font_map" pango_font_get_font_map :: 
+    Ptr Font ->                             -- _obj : TInterface "Pango" "Font"
+    IO (Ptr FontMap)
+
+
+fontGetFontMap ::
+    (MonadIO m, FontK a) =>
+    a ->                                    -- _obj
+    m FontMap
+fontGetFontMap _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_get_font_map _obj'
+    result' <- (newObject FontMap) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Font::get_glyph_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph", argType = TBasicType TUInt32, 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_get_glyph_extents" pango_font_get_glyph_extents :: 
+    Ptr Font ->                             -- _obj : TInterface "Pango" "Font"
+    Word32 ->                               -- glyph : TBasicType TUInt32
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+fontGetGlyphExtents ::
+    (MonadIO m, FontK a) =>
+    a ->                                    -- _obj
+    Word32 ->                               -- glyph
+    m (Rectangle,Rectangle)
+fontGetGlyphExtents _obj glyph = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_font_get_glyph_extents _obj' glyph ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method Font::get_metrics
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMetrics"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_get_metrics" pango_font_get_metrics :: 
+    Ptr Font ->                             -- _obj : TInterface "Pango" "Font"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr FontMetrics)
+
+
+fontGetMetrics ::
+    (MonadIO m, FontK a) =>
+    a ->                                    -- _obj
+    Maybe (Language) ->                     -- language
+    m FontMetrics
+fontGetMetrics _obj language = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeLanguage <- case language of
+        Nothing -> return nullPtr
+        Just jLanguage -> do
+            let jLanguage' = unsafeManagedPtrGetPtr jLanguage
+            return jLanguage'
+    result <- pango_font_get_metrics _obj' maybeLanguage
+    result' <- (wrapBoxed FontMetrics) result
+    touchManagedPtr _obj
+    whenJust language touchManagedPtr
+    return result'
+
+-- method Font::descriptions_free
+-- method type : MemberFunction
+-- Args : [Arg {argName = "descs", argType = TCArray False (-1) 1 (TInterface "Pango" "FontDescription"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_descs", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : [Arg {argName = "n_descs", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- hInArgs : [Arg {argName = "descs", argType = TCArray False (-1) 1 (TInterface "Pango" "FontDescription"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_descriptions_free" pango_font_descriptions_free :: 
+    Ptr (Ptr FontDescription) ->            -- descs : TCArray False (-1) 1 (TInterface "Pango" "FontDescription")
+    Int32 ->                                -- n_descs : TBasicType TInt32
+    IO ()
+
+
+fontDescriptionsFree ::
+    (MonadIO m) =>
+    Maybe ([FontDescription]) ->            -- descs
+    m ()
+fontDescriptionsFree descs = liftIO $ do
+    let n_descs = case descs of
+            Nothing -> 0
+            Just jDescs -> fromIntegral $ length jDescs
+    maybeDescs <- case descs of
+        Nothing -> return nullPtr
+        Just jDescs -> do
+            jDescs' <- mapM copyBoxed jDescs
+            jDescs'' <- packPtrArray jDescs'
+            return jDescs''
+    pango_font_descriptions_free maybeDescs n_descs
+    whenJust descs (mapM_ touchManagedPtr)
+    return ()
+
+-- struct FontDescription
+newtype FontDescription = FontDescription (ForeignPtr FontDescription)
+noFontDescription :: Maybe FontDescription
+noFontDescription = Nothing
+
+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
+
+-- 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
+    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'
+    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'
+    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'
+    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'
+    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'
+    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 ()
+
+-- object FontFace 
+newtype FontFace = FontFace (ForeignPtr FontFace)
+noFontFace :: Maybe FontFace
+noFontFace = Nothing
+
+foreign import ccall "pango_font_face_get_type"
+    c_pango_font_face_get_type :: IO GType
+
+type instance ParentTypes FontFace = '[GObject.Object]
+
+instance GObject FontFace where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_font_face_get_type
+    
+
+class GObject o => FontFaceK o
+instance (GObject o, IsDescendantOf FontFace o) => FontFaceK o
+
+toFontFace :: FontFaceK o => o -> IO FontFace
+toFontFace = unsafeCastTo FontFace
+
+-- method FontFace::describe
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", 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_face_describe" pango_font_face_describe :: 
+    Ptr FontFace ->                         -- _obj : TInterface "Pango" "FontFace"
+    IO (Ptr FontDescription)
+
+
+fontFaceDescribe ::
+    (MonadIO m, FontFaceK a) =>
+    a ->                                    -- _obj
+    m FontDescription
+fontFaceDescribe _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_face_describe _obj'
+    result' <- (wrapBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontFace::get_face_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", 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_face_get_face_name" pango_font_face_get_face_name :: 
+    Ptr FontFace ->                         -- _obj : TInterface "Pango" "FontFace"
+    IO CString
+
+
+fontFaceGetFaceName ::
+    (MonadIO m, FontFaceK a) =>
+    a ->                                    -- _obj
+    m T.Text
+fontFaceGetFaceName _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_face_get_face_name _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontFace::is_synthesized
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", 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_face_is_synthesized" pango_font_face_is_synthesized :: 
+    Ptr FontFace ->                         -- _obj : TInterface "Pango" "FontFace"
+    IO CInt
+
+
+fontFaceIsSynthesized ::
+    (MonadIO m, FontFaceK a) =>
+    a ->                                    -- _obj
+    m Bool
+fontFaceIsSynthesized _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_face_is_synthesized _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontFace::list_sizes
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sizes", argType = TCArray False (-1) 2 (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_sizes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_sizes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFace", 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_face_list_sizes" pango_font_face_list_sizes :: 
+    Ptr FontFace ->                         -- _obj : TInterface "Pango" "FontFace"
+    Ptr (Ptr Int32) ->                      -- sizes : TCArray False (-1) 2 (TBasicType TInt32)
+    Ptr Int32 ->                            -- n_sizes : TBasicType TInt32
+    IO ()
+
+
+fontFaceListSizes ::
+    (MonadIO m, FontFaceK a) =>
+    a ->                                    -- _obj
+    m ([Int32])
+fontFaceListSizes _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    sizes <- allocMem :: IO (Ptr (Ptr Int32))
+    n_sizes <- allocMem :: IO (Ptr Int32)
+    pango_font_face_list_sizes _obj' sizes n_sizes
+    n_sizes' <- peek n_sizes
+    sizes' <- peek sizes
+    sizes'' <- (unpackStorableArrayWithLength n_sizes') sizes'
+    freeMem sizes'
+    touchManagedPtr _obj
+    freeMem sizes
+    freeMem n_sizes
+    return sizes''
+
+-- object FontFamily 
+newtype FontFamily = FontFamily (ForeignPtr FontFamily)
+noFontFamily :: Maybe FontFamily
+noFontFamily = Nothing
+
+foreign import ccall "pango_font_family_get_type"
+    c_pango_font_family_get_type :: IO GType
+
+type instance ParentTypes FontFamily = '[GObject.Object]
+
+instance GObject FontFamily where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_font_family_get_type
+    
+
+class GObject o => FontFamilyK o
+instance (GObject o, IsDescendantOf FontFamily o) => FontFamilyK o
+
+toFontFamily :: FontFamilyK o => o -> IO FontFamily
+toFontFamily = unsafeCastTo FontFamily
+
+-- method FontFamily::get_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", 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_family_get_name" pango_font_family_get_name :: 
+    Ptr FontFamily ->                       -- _obj : TInterface "Pango" "FontFamily"
+    IO CString
+
+
+fontFamilyGetName ::
+    (MonadIO m, FontFamilyK a) =>
+    a ->                                    -- _obj
+    m T.Text
+fontFamilyGetName _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_family_get_name _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontFamily::is_monospace
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", 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_family_is_monospace" pango_font_family_is_monospace :: 
+    Ptr FontFamily ->                       -- _obj : TInterface "Pango" "FontFamily"
+    IO CInt
+
+
+fontFamilyIsMonospace ::
+    (MonadIO m, FontFamilyK a) =>
+    a ->                                    -- _obj
+    m Bool
+fontFamilyIsMonospace _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_family_is_monospace _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontFamily::list_faces
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "faces", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFace"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer},Arg {argName = "n_faces", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_faces", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontFamily", 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_family_list_faces" pango_font_family_list_faces :: 
+    Ptr FontFamily ->                       -- _obj : TInterface "Pango" "FontFamily"
+    Ptr (Ptr (Ptr FontFace)) ->             -- faces : TCArray False (-1) 2 (TInterface "Pango" "FontFace")
+    Ptr Int32 ->                            -- n_faces : TBasicType TInt32
+    IO ()
+
+
+fontFamilyListFaces ::
+    (MonadIO m, FontFamilyK a) =>
+    a ->                                    -- _obj
+    m ([FontFace])
+fontFamilyListFaces _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    faces <- allocMem :: IO (Ptr (Ptr (Ptr FontFace)))
+    n_faces <- allocMem :: IO (Ptr Int32)
+    pango_font_family_list_faces _obj' faces n_faces
+    n_faces' <- peek n_faces
+    faces' <- peek faces
+    faces'' <- (unpackPtrArrayWithLength n_faces') faces'
+    faces''' <- mapM (newObject FontFace) faces''
+    freeMem faces'
+    touchManagedPtr _obj
+    freeMem faces
+    freeMem n_faces
+    return faces'''
+
+-- object FontMap 
+newtype FontMap = FontMap (ForeignPtr FontMap)
+noFontMap :: Maybe FontMap
+noFontMap = Nothing
+
+foreign import ccall "pango_font_map_get_type"
+    c_pango_font_map_get_type :: IO GType
+
+type instance ParentTypes FontMap = '[GObject.Object]
+
+instance GObject FontMap where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_font_map_get_type
+    
+
+class GObject o => FontMapK o
+instance (GObject o, IsDescendantOf FontMap o) => FontMapK o
+
+toFontMap :: FontMapK o => o -> IO FontMap
+toFontMap = unsafeCastTo FontMap
+
+-- method FontMap::changed
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", 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_map_changed" pango_font_map_changed :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    IO ()
+
+
+fontMapChanged ::
+    (MonadIO m, FontMapK a) =>
+    a ->                                    -- _obj
+    m ()
+fontMapChanged _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_font_map_changed _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontMap::create_context
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Context"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_map_create_context" pango_font_map_create_context :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    IO (Ptr Context)
+
+
+fontMapCreateContext ::
+    (MonadIO m, FontMapK a) =>
+    a ->                                    -- _obj
+    m Context
+fontMapCreateContext _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_map_create_context _obj'
+    result' <- (wrapObject Context) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontMap::get_serial
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", 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_map_get_serial" pango_font_map_get_serial :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    IO Word32
+
+
+fontMapGetSerial ::
+    (MonadIO m, FontMapK a) =>
+    a ->                                    -- _obj
+    m Word32
+fontMapGetSerial _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_map_get_serial _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMap::get_shape_engine_type
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", 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_map_get_shape_engine_type" pango_font_map_get_shape_engine_type :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    IO CString
+
+
+fontMapGetShapeEngineType ::
+    (MonadIO m, FontMapK a) =>
+    a ->                                    -- _obj
+    m T.Text
+fontMapGetShapeEngineType _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_font_map_get_shape_engine_type _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontMap::list_families
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "families", argType = TCArray False (-1) 2 (TInterface "Pango" "FontFamily"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer},Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", 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_map_list_families" pango_font_map_list_families :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    Ptr (Ptr (Ptr FontFamily)) ->           -- families : TCArray False (-1) 2 (TInterface "Pango" "FontFamily")
+    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    IO ()
+
+
+fontMapListFamilies ::
+    (MonadIO m, FontMapK a) =>
+    a ->                                    -- _obj
+    m ([FontFamily])
+fontMapListFamilies _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    families <- allocMem :: IO (Ptr (Ptr (Ptr FontFamily)))
+    n_families <- allocMem :: IO (Ptr Int32)
+    pango_font_map_list_families _obj' families n_families
+    n_families' <- peek n_families
+    families' <- peek families
+    families'' <- (unpackPtrArrayWithLength n_families') families'
+    families''' <- mapM (newObject FontFamily) families''
+    freeMem families'
+    touchManagedPtr _obj
+    freeMem families
+    freeMem n_families
+    return families'''
+
+-- method FontMap::load_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Font"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_map_load_font" pango_font_map_load_font :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    Ptr Context ->                          -- context : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    IO (Ptr Font)
+
+
+fontMapLoadFont ::
+    (MonadIO m, FontMapK a, ContextK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- context
+    FontDescription ->                      -- desc
+    m Font
+fontMapLoadFont _obj context desc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let context' = unsafeManagedPtrCastPtr context
+    let desc' = unsafeManagedPtrGetPtr desc
+    result <- pango_font_map_load_font _obj' context' desc'
+    result' <- (wrapObject Font) result
+    touchManagedPtr _obj
+    touchManagedPtr context
+    touchManagedPtr desc
+    return result'
+
+-- method FontMap::load_fontset
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMap", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Fontset"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_map_load_fontset" pango_font_map_load_fontset :: 
+    Ptr FontMap ->                          -- _obj : TInterface "Pango" "FontMap"
+    Ptr Context ->                          -- context : TInterface "Pango" "Context"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr Fontset)
+
+
+fontMapLoadFontset ::
+    (MonadIO m, FontMapK a, ContextK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- context
+    FontDescription ->                      -- desc
+    Language ->                             -- language
+    m Fontset
+fontMapLoadFontset _obj context desc language = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let context' = unsafeManagedPtrCastPtr context
+    let desc' = unsafeManagedPtrGetPtr desc
+    let language' = unsafeManagedPtrGetPtr language
+    result <- pango_font_map_load_fontset _obj' context' desc' language'
+    result' <- (wrapObject Fontset) result
+    touchManagedPtr _obj
+    touchManagedPtr context
+    touchManagedPtr desc
+    touchManagedPtr language
+    return result'
+
+-- Flags FontMask
+
+data FontMask = 
+      FontMaskFamily
+    | FontMaskStyle
+    | FontMaskVariant
+    | FontMaskWeight
+    | FontMaskStretch
+    | FontMaskSize
+    | FontMaskGravity
+    | AnotherFontMask Int
+    deriving (Show, Eq)
+
+instance Enum FontMask where
+    fromEnum FontMaskFamily = 1
+    fromEnum FontMaskStyle = 2
+    fromEnum FontMaskVariant = 4
+    fromEnum FontMaskWeight = 8
+    fromEnum FontMaskStretch = 16
+    fromEnum FontMaskSize = 32
+    fromEnum FontMaskGravity = 64
+    fromEnum (AnotherFontMask k) = k
+
+    toEnum 1 = FontMaskFamily
+    toEnum 2 = FontMaskStyle
+    toEnum 4 = FontMaskVariant
+    toEnum 8 = FontMaskWeight
+    toEnum 16 = FontMaskStretch
+    toEnum 32 = FontMaskSize
+    toEnum 64 = FontMaskGravity
+    toEnum k = AnotherFontMask k
+
+foreign import ccall "pango_font_mask_get_type" c_pango_font_mask_get_type :: 
+    IO GType
+
+instance BoxedEnum FontMask where
+    boxedEnumType _ = c_pango_font_mask_get_type
+
+instance IsGFlag FontMask
+
+-- struct FontMetrics
+newtype FontMetrics = FontMetrics (ForeignPtr FontMetrics)
+noFontMetrics :: Maybe FontMetrics
+noFontMetrics = Nothing
+
+foreign import ccall "pango_font_metrics_get_type" c_pango_font_metrics_get_type :: 
+    IO GType
+
+instance BoxedObject FontMetrics where
+    boxedType _ = c_pango_font_metrics_get_type
+
+fontMetricsReadRefCount :: FontMetrics -> IO Word32
+fontMetricsReadRefCount s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+fontMetricsReadAscent :: FontMetrics -> IO Int32
+fontMetricsReadAscent s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Int32
+    return val
+
+fontMetricsReadDescent :: FontMetrics -> IO Int32
+fontMetricsReadDescent s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Int32
+    return val
+
+fontMetricsReadApproximateCharWidth :: FontMetrics -> IO Int32
+fontMetricsReadApproximateCharWidth s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 12) :: IO Int32
+    return val
+
+fontMetricsReadApproximateDigitWidth :: FontMetrics -> IO Int32
+fontMetricsReadApproximateDigitWidth s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Int32
+    return val
+
+fontMetricsReadUnderlinePosition :: FontMetrics -> IO Int32
+fontMetricsReadUnderlinePosition s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 20) :: IO Int32
+    return val
+
+fontMetricsReadUnderlineThickness :: FontMetrics -> IO Int32
+fontMetricsReadUnderlineThickness s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO Int32
+    return val
+
+fontMetricsReadStrikethroughPosition :: FontMetrics -> IO Int32
+fontMetricsReadStrikethroughPosition s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 28) :: IO Int32
+    return val
+
+fontMetricsReadStrikethroughThickness :: FontMetrics -> IO Int32
+fontMetricsReadStrikethroughThickness s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO Int32
+    return val
+
+-- method FontMetrics::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "FontMetrics"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_metrics_new" pango_font_metrics_new :: 
+    IO (Ptr FontMetrics)
+
+
+fontMetricsNew ::
+    (MonadIO m) =>
+    m FontMetrics
+fontMetricsNew  = liftIO $ do
+    result <- pango_font_metrics_new
+    result' <- (wrapBoxed FontMetrics) result
+    return result'
+
+-- method FontMetrics::get_approximate_char_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_approximate_char_width" pango_font_metrics_get_approximate_char_width :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetApproximateCharWidth ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetApproximateCharWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_approximate_char_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_approximate_digit_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_approximate_digit_width" pango_font_metrics_get_approximate_digit_width :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetApproximateDigitWidth ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetApproximateDigitWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_approximate_digit_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_ascent
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_ascent" pango_font_metrics_get_ascent :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetAscent ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetAscent _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_ascent _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_descent
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_descent" pango_font_metrics_get_descent :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetDescent ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetDescent _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_descent _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_strikethrough_position
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_strikethrough_position" pango_font_metrics_get_strikethrough_position :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetStrikethroughPosition ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetStrikethroughPosition _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_strikethrough_position _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_strikethrough_thickness
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_strikethrough_thickness" pango_font_metrics_get_strikethrough_thickness :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetStrikethroughThickness ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetStrikethroughThickness _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_strikethrough_thickness _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_underline_position
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_underline_position" pango_font_metrics_get_underline_position :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetUnderlinePosition ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetUnderlinePosition _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_underline_position _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::get_underline_thickness
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_get_underline_thickness" pango_font_metrics_get_underline_thickness :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO Int32
+
+
+fontMetricsGetUnderlineThickness ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m Int32
+fontMetricsGetUnderlineThickness _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_get_underline_thickness _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontMetrics::ref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMetrics"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_metrics_ref" pango_font_metrics_ref :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO (Ptr FontMetrics)
+
+
+fontMetricsRef ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m FontMetrics
+fontMetricsRef _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_metrics_ref _obj'
+    result' <- (wrapBoxed FontMetrics) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontMetrics::unref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontMetrics", 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_metrics_unref" pango_font_metrics_unref :: 
+    Ptr FontMetrics ->                      -- _obj : TInterface "Pango" "FontMetrics"
+    IO ()
+
+
+fontMetricsUnref ::
+    (MonadIO m) =>
+    FontMetrics ->                          -- _obj
+    m ()
+fontMetricsUnref _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_font_metrics_unref _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- object Fontset 
+newtype Fontset = Fontset (ForeignPtr Fontset)
+noFontset :: Maybe Fontset
+noFontset = Nothing
+
+foreign import ccall "pango_fontset_get_type"
+    c_pango_fontset_get_type :: IO GType
+
+type instance ParentTypes Fontset = '[GObject.Object]
+
+instance GObject Fontset where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_fontset_get_type
+    
+
+class GObject o => FontsetK o
+instance (GObject o, IsDescendantOf Fontset o) => FontsetK o
+
+toFontset :: FontsetK o => o -> IO Fontset
+toFontset = unsafeCastTo Fontset
+
+-- method Fontset::foreach
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "func", argType = TInterface "Pango" "FontsetForeachFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "func", argType = TInterface "Pango" "FontsetForeachFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_foreach" pango_fontset_foreach :: 
+    Ptr Fontset ->                          -- _obj : TInterface "Pango" "Fontset"
+    FunPtr FontsetForeachFuncC ->           -- func : TInterface "Pango" "FontsetForeachFunc"
+    Ptr () ->                               -- data : TBasicType TVoid
+    IO ()
+
+
+fontsetForeach ::
+    (MonadIO m, FontsetK a) =>
+    a ->                                    -- _obj
+    FontsetForeachFunc ->                   -- func
+    m ()
+fontsetForeach _obj func = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    func' <- mkFontsetForeachFunc (fontsetForeachFuncWrapper Nothing func)
+    let data_ = nullPtr
+    pango_fontset_foreach _obj' func' data_
+    safeFreeFunPtr $ castFunPtrToPtr func'
+    touchManagedPtr _obj
+    return ()
+
+-- method Fontset::get_font
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wc", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Font"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_get_font" pango_fontset_get_font :: 
+    Ptr Fontset ->                          -- _obj : TInterface "Pango" "Fontset"
+    Word32 ->                               -- wc : TBasicType TUInt32
+    IO (Ptr Font)
+
+
+fontsetGetFont ::
+    (MonadIO m, FontsetK a) =>
+    a ->                                    -- _obj
+    Word32 ->                               -- wc
+    m Font
+fontsetGetFont _obj wc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_fontset_get_font _obj' wc
+    result' <- (wrapObject Font) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Fontset::get_metrics
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Fontset", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMetrics"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_get_metrics" pango_fontset_get_metrics :: 
+    Ptr Fontset ->                          -- _obj : TInterface "Pango" "Fontset"
+    IO (Ptr FontMetrics)
+
+
+fontsetGetMetrics ::
+    (MonadIO m, FontsetK a) =>
+    a ->                                    -- _obj
+    m FontMetrics
+fontsetGetMetrics _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_fontset_get_metrics _obj'
+    result' <- (wrapBoxed FontMetrics) result
+    touchManagedPtr _obj
+    return result'
+
+-- callback FontsetForeachFunc
+fontsetForeachFuncClosure :: FontsetForeachFunc -> IO Closure
+fontsetForeachFuncClosure cb = newCClosure =<< mkFontsetForeachFunc wrapped
+    where wrapped = fontsetForeachFuncWrapper Nothing cb
+
+type FontsetForeachFuncC =
+    Ptr Fontset ->
+    Ptr Font ->
+    Ptr () ->
+    IO CInt
+
+foreign import ccall "wrapper"
+    mkFontsetForeachFunc :: FontsetForeachFuncC -> IO (FunPtr FontsetForeachFuncC)
+
+type FontsetForeachFunc =
+    Fontset ->
+    Font ->
+    IO Bool
+
+noFontsetForeachFunc :: Maybe FontsetForeachFunc
+noFontsetForeachFunc = Nothing
+
+fontsetForeachFuncWrapper ::
+    Maybe (Ptr (FunPtr (FontsetForeachFuncC))) ->
+    FontsetForeachFunc ->
+    Ptr Fontset ->
+    Ptr Font ->
+    Ptr () ->
+    IO CInt
+fontsetForeachFuncWrapper funptrptr _cb fontset font _ = do
+    fontset' <- (newObject Fontset) fontset
+    font' <- (newObject Font) font
+    result <- _cb  fontset' font'
+    maybeReleaseFunPtr funptrptr
+    let result' = (fromIntegral . fromEnum) result
+    return result'
+
+-- object FontsetSimple 
+newtype FontsetSimple = FontsetSimple (ForeignPtr FontsetSimple)
+noFontsetSimple :: Maybe FontsetSimple
+noFontsetSimple = Nothing
+
+foreign import ccall "pango_fontset_simple_get_type"
+    c_pango_fontset_simple_get_type :: IO GType
+
+type instance ParentTypes FontsetSimple = '[Fontset, GObject.Object]
+
+instance GObject FontsetSimple where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_fontset_simple_get_type
+    
+
+class GObject o => FontsetSimpleK o
+instance (GObject o, IsDescendantOf FontsetSimple o) => FontsetSimpleK o
+
+toFontsetSimple :: FontsetSimpleK o => o -> IO FontsetSimple
+toFontsetSimple = unsafeCastTo FontsetSimple
+
+-- method FontsetSimple::new
+-- method type : Constructor
+-- Args : [Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontsetSimple"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_simple_new" pango_fontset_simple_new :: 
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    IO (Ptr FontsetSimple)
+
+
+fontsetSimpleNew ::
+    (MonadIO m) =>
+    Language ->                             -- language
+    m FontsetSimple
+fontsetSimpleNew language = liftIO $ do
+    let language' = unsafeManagedPtrGetPtr language
+    result <- pango_fontset_simple_new language'
+    result' <- (wrapObject FontsetSimple) result
+    touchManagedPtr language
+    return result'
+
+-- method FontsetSimple::append
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontsetSimple", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontsetSimple", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_simple_append" pango_fontset_simple_append :: 
+    Ptr FontsetSimple ->                    -- _obj : TInterface "Pango" "FontsetSimple"
+    Ptr Font ->                             -- font : TInterface "Pango" "Font"
+    IO ()
+
+
+fontsetSimpleAppend ::
+    (MonadIO m, FontsetSimpleK a, FontK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- font
+    m ()
+fontsetSimpleAppend _obj font = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let font' = unsafeManagedPtrCastPtr font
+    pango_fontset_simple_append _obj' font'
+    touchManagedPtr _obj
+    touchManagedPtr font
+    return ()
+
+-- method FontsetSimple::size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontsetSimple", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontsetSimple", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_fontset_simple_size" pango_fontset_simple_size :: 
+    Ptr FontsetSimple ->                    -- _obj : TInterface "Pango" "FontsetSimple"
+    IO Int32
+
+
+fontsetSimpleSize ::
+    (MonadIO m, FontsetSimpleK a) =>
+    a ->                                    -- _obj
+    m Int32
+fontsetSimpleSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_fontset_simple_size _obj'
+    touchManagedPtr _obj
+    return result
+
+-- struct GlyphGeometry
+newtype GlyphGeometry = GlyphGeometry (ForeignPtr GlyphGeometry)
+noGlyphGeometry :: Maybe GlyphGeometry
+noGlyphGeometry = Nothing
+
+glyphGeometryReadWidth :: GlyphGeometry -> IO Int32
+glyphGeometryReadWidth s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+glyphGeometryReadXOffset :: GlyphGeometry -> IO Int32
+glyphGeometryReadXOffset s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Int32
+    return val
+
+glyphGeometryReadYOffset :: GlyphGeometry -> IO Int32
+glyphGeometryReadYOffset s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Int32
+    return val
+
+-- struct GlyphInfo
+newtype GlyphInfo = GlyphInfo (ForeignPtr GlyphInfo)
+noGlyphInfo :: Maybe GlyphInfo
+noGlyphInfo = Nothing
+
+glyphInfoReadGlyph :: GlyphInfo -> IO Word32
+glyphInfoReadGlyph s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+glyphInfoReadGeometry :: GlyphInfo -> IO GlyphGeometry
+glyphInfoReadGeometry s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO (Ptr GlyphGeometry)
+    val' <- (newPtr 12 GlyphGeometry) val
+    return val'
+
+glyphInfoReadAttr :: GlyphInfo -> IO GlyphVisAttr
+glyphInfoReadAttr s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr GlyphVisAttr)
+    val' <- (newPtr 4 GlyphVisAttr) val
+    return val'
+
+-- struct GlyphItem
+newtype GlyphItem = GlyphItem (ForeignPtr GlyphItem)
+noGlyphItem :: Maybe GlyphItem
+noGlyphItem = Nothing
+
+foreign import ccall "pango_glyph_item_get_type" c_pango_glyph_item_get_type :: 
+    IO GType
+
+instance BoxedObject GlyphItem where
+    boxedType _ = c_pango_glyph_item_get_type
+
+glyphItemReadItem :: GlyphItem -> IO Item
+glyphItemReadItem s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Item)
+    val' <- (newBoxed Item) val
+    return val'
+
+glyphItemReadGlyphs :: GlyphItem -> IO GlyphString
+glyphItemReadGlyphs s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO (Ptr GlyphString)
+    val' <- (newBoxed GlyphString) val
+    return val'
+
+-- method GlyphItem::apply_attrs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "list", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "list", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGSList (TInterface "Pango" "GlyphItem")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_apply_attrs" pango_glyph_item_apply_attrs :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    Ptr AttrList ->                         -- list : TInterface "Pango" "AttrList"
+    IO (Ptr (GSList (Ptr GlyphItem)))
+
+
+glyphItemApplyAttrs ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    T.Text ->                               -- text
+    AttrList ->                             -- list
+    m [GlyphItem]
+glyphItemApplyAttrs _obj text list = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    let list' = unsafeManagedPtrGetPtr list
+    result <- pango_glyph_item_apply_attrs _obj' text' list'
+    result' <- unpackGSList result
+    result'' <- mapM (wrapBoxed GlyphItem) result'
+    g_slist_free result
+    touchManagedPtr _obj
+    touchManagedPtr list
+    freeMem text'
+    return result''
+
+-- method GlyphItem::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphItem"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_copy" pango_glyph_item_copy :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    IO (Ptr GlyphItem)
+
+
+glyphItemCopy ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    m GlyphItem
+glyphItemCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_item_copy _obj'
+    result' <- (wrapBoxed GlyphItem) result
+    touchManagedPtr _obj
+    return result'
+
+-- method GlyphItem::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_free" pango_glyph_item_free :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    IO ()
+
+
+glyphItemFree ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    m ()
+glyphItemFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_glyph_item_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method GlyphItem::get_logical_widths
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_widths", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_widths", argType = TCArray False (-1) (-1) (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_glyph_item_get_logical_widths" pango_glyph_item_get_logical_widths :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt32)
+    IO ()
+
+
+glyphItemGetLogicalWidths ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    T.Text ->                               -- text
+    Ptr Int32 ->                            -- logical_widths
+    m ()
+glyphItemGetLogicalWidths _obj text logical_widths = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    pango_glyph_item_get_logical_widths _obj' text' logical_widths
+    touchManagedPtr _obj
+    freeMem text'
+    return ()
+
+-- method GlyphItem::letter_space
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "log_attrs", argType = TCArray False (-1) (-1) (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "letter_spacing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "log_attrs", argType = TCArray False (-1) (-1) (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "letter_spacing", 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_glyph_item_letter_space" pango_glyph_item_letter_space :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    Ptr (Ptr LogAttr) ->                    -- log_attrs : TCArray False (-1) (-1) (TInterface "Pango" "LogAttr")
+    Int32 ->                                -- letter_spacing : TBasicType TInt32
+    IO ()
+
+
+glyphItemLetterSpace ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    T.Text ->                               -- text
+    Ptr (Ptr LogAttr) ->                    -- log_attrs
+    Int32 ->                                -- letter_spacing
+    m ()
+glyphItemLetterSpace _obj text log_attrs letter_spacing = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    pango_glyph_item_letter_space _obj' text' log_attrs letter_spacing
+    touchManagedPtr _obj
+    freeMem text'
+    return ()
+
+-- method GlyphItem::split
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphItem"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_split" pango_glyph_item_split :: 
+    Ptr GlyphItem ->                        -- _obj : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- split_index : TBasicType TInt32
+    IO (Ptr GlyphItem)
+
+
+glyphItemSplit ::
+    (MonadIO m) =>
+    GlyphItem ->                            -- _obj
+    T.Text ->                               -- text
+    Int32 ->                                -- split_index
+    m GlyphItem
+glyphItemSplit _obj text split_index = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    result <- pango_glyph_item_split _obj' text' split_index
+    result' <- (wrapBoxed GlyphItem) result
+    touchManagedPtr _obj
+    freeMem text'
+    return result'
+
+-- struct GlyphItemIter
+newtype GlyphItemIter = GlyphItemIter (ForeignPtr GlyphItemIter)
+noGlyphItemIter :: Maybe GlyphItemIter
+noGlyphItemIter = Nothing
+
+foreign import ccall "pango_glyph_item_iter_get_type" c_pango_glyph_item_iter_get_type :: 
+    IO GType
+
+instance BoxedObject GlyphItemIter where
+    boxedType _ = c_pango_glyph_item_iter_get_type
+
+glyphItemIterReadGlyphItem :: GlyphItemIter -> IO GlyphItem
+glyphItemIterReadGlyphItem s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr GlyphItem)
+    val' <- (newBoxed GlyphItem) val
+    return val'
+
+glyphItemIterReadText :: GlyphItemIter -> IO T.Text
+glyphItemIterReadText s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+glyphItemIterReadStartGlyph :: GlyphItemIter -> IO Int32
+glyphItemIterReadStartGlyph s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Int32
+    return val
+
+glyphItemIterReadStartIndex :: GlyphItemIter -> IO Int32
+glyphItemIterReadStartIndex s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 20) :: IO Int32
+    return val
+
+glyphItemIterReadStartChar :: GlyphItemIter -> IO Int32
+glyphItemIterReadStartChar s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO Int32
+    return val
+
+glyphItemIterReadEndGlyph :: GlyphItemIter -> IO Int32
+glyphItemIterReadEndGlyph s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 28) :: IO Int32
+    return val
+
+glyphItemIterReadEndIndex :: GlyphItemIter -> IO Int32
+glyphItemIterReadEndIndex s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO Int32
+    return val
+
+glyphItemIterReadEndChar :: GlyphItemIter -> IO Int32
+glyphItemIterReadEndChar s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 36) :: IO Int32
+    return val
+
+-- method GlyphItemIter::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphItemIter"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_copy" pango_glyph_item_iter_copy :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    IO (Ptr GlyphItemIter)
+
+
+glyphItemIterCopy ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    m GlyphItemIter
+glyphItemIterCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_item_iter_copy _obj'
+    result' <- (wrapBoxed GlyphItemIter) result
+    touchManagedPtr _obj
+    return result'
+
+-- method GlyphItemIter::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_free" pango_glyph_item_iter_free :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    IO ()
+
+
+glyphItemIterFree ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    m ()
+glyphItemIterFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_glyph_item_iter_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method GlyphItemIter::init_end
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_init_end" pango_glyph_item_iter_init_end :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    Ptr GlyphItem ->                        -- glyph_item : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    IO CInt
+
+
+glyphItemIterInitEnd ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    GlyphItem ->                            -- glyph_item
+    T.Text ->                               -- text
+    m Bool
+glyphItemIterInitEnd _obj glyph_item text = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let glyph_item' = unsafeManagedPtrGetPtr glyph_item
+    text' <- textToCString text
+    result <- pango_glyph_item_iter_init_end _obj' glyph_item' text'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    touchManagedPtr glyph_item
+    freeMem text'
+    return result'
+
+-- method GlyphItemIter::init_start
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_init_start" pango_glyph_item_iter_init_start :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    Ptr GlyphItem ->                        -- glyph_item : TInterface "Pango" "GlyphItem"
+    CString ->                              -- text : TBasicType TUTF8
+    IO CInt
+
+
+glyphItemIterInitStart ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    GlyphItem ->                            -- glyph_item
+    T.Text ->                               -- text
+    m Bool
+glyphItemIterInitStart _obj glyph_item text = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let glyph_item' = unsafeManagedPtrGetPtr glyph_item
+    text' <- textToCString text
+    result <- pango_glyph_item_iter_init_start _obj' glyph_item' text'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    touchManagedPtr glyph_item
+    freeMem text'
+    return result'
+
+-- method GlyphItemIter::next_cluster
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_next_cluster" pango_glyph_item_iter_next_cluster :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    IO CInt
+
+
+glyphItemIterNextCluster ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    m Bool
+glyphItemIterNextCluster _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_item_iter_next_cluster _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method GlyphItemIter::prev_cluster
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphItemIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_item_iter_prev_cluster" pango_glyph_item_iter_prev_cluster :: 
+    Ptr GlyphItemIter ->                    -- _obj : TInterface "Pango" "GlyphItemIter"
+    IO CInt
+
+
+glyphItemIterPrevCluster ::
+    (MonadIO m) =>
+    GlyphItemIter ->                        -- _obj
+    m Bool
+glyphItemIterPrevCluster _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_item_iter_prev_cluster _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- struct GlyphString
+newtype GlyphString = GlyphString (ForeignPtr GlyphString)
+noGlyphString :: Maybe GlyphString
+noGlyphString = Nothing
+
+foreign import ccall "pango_glyph_string_get_type" c_pango_glyph_string_get_type :: 
+    IO GType
+
+instance BoxedObject GlyphString where
+    boxedType _ = c_pango_glyph_string_get_type
+
+glyphStringReadNumGlyphs :: GlyphString -> IO Int32
+glyphStringReadNumGlyphs s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+glyphStringReadGlyphs :: GlyphString -> IO GlyphInfo
+glyphStringReadGlyphs s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO (Ptr GlyphInfo)
+    val' <- (newPtr 20 GlyphInfo) val
+    return val'
+
+glyphStringReadLogClusters :: GlyphString -> IO Int32
+glyphStringReadLogClusters s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Int32
+    return val
+
+-- method GlyphString::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "GlyphString"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_new" pango_glyph_string_new :: 
+    IO (Ptr GlyphString)
+
+
+glyphStringNew ::
+    (MonadIO m) =>
+    m GlyphString
+glyphStringNew  = liftIO $ do
+    result <- pango_glyph_string_new
+    result' <- (wrapBoxed GlyphString) result
+    return result'
+
+-- method GlyphString::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphString"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_copy" pango_glyph_string_copy :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    IO (Ptr GlyphString)
+
+
+glyphStringCopy ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    m GlyphString
+glyphStringCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_string_copy _obj'
+    result' <- (wrapBoxed GlyphString) result
+    touchManagedPtr _obj
+    return result'
+
+-- method GlyphString::extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_extents" pango_glyph_string_extents :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    Ptr Font ->                             -- font : TInterface "Pango" "Font"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+glyphStringExtents ::
+    (MonadIO m, FontK a) =>
+    GlyphString ->                          -- _obj
+    a ->                                    -- font
+    m (Rectangle,Rectangle)
+glyphStringExtents _obj font = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let font' = unsafeManagedPtrCastPtr font
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_glyph_string_extents _obj' font' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    touchManagedPtr font
+    return (ink_rect', logical_rect')
+
+-- method GlyphString::extents_range
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_extents_range" pango_glyph_string_extents_range :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    Int32 ->                                -- start : TBasicType TInt32
+    Int32 ->                                -- end : TBasicType TInt32
+    Ptr Font ->                             -- font : TInterface "Pango" "Font"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+glyphStringExtentsRange ::
+    (MonadIO m, FontK a) =>
+    GlyphString ->                          -- _obj
+    Int32 ->                                -- start
+    Int32 ->                                -- end
+    a ->                                    -- font
+    m (Rectangle,Rectangle)
+glyphStringExtentsRange _obj start end font = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let font' = unsafeManagedPtrCastPtr font
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_glyph_string_extents_range _obj' start end font' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    touchManagedPtr font
+    return (ink_rect', logical_rect')
+
+-- method GlyphString::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_free" pango_glyph_string_free :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    IO ()
+
+
+glyphStringFree ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    m ()
+glyphStringFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_glyph_string_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method GlyphString::get_logical_widths
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "embedding_level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_widths", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "embedding_level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_widths", argType = TCArray False (-1) (-1) (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_glyph_string_get_logical_widths" pango_glyph_string_get_logical_widths :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- embedding_level : TBasicType TInt32
+    Ptr Int32 ->                            -- logical_widths : TCArray False (-1) (-1) (TBasicType TInt32)
+    IO ()
+
+
+glyphStringGetLogicalWidths ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Int32 ->                                -- embedding_level
+    Ptr Int32 ->                            -- logical_widths
+    m ()
+glyphStringGetLogicalWidths _obj text length_ embedding_level logical_widths = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    pango_glyph_string_get_logical_widths _obj' text' length_ embedding_level logical_widths
+    touchManagedPtr _obj
+    freeMem text'
+    return ()
+
+-- method GlyphString::get_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_glyph_string_get_width" pango_glyph_string_get_width :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    IO Int32
+
+
+glyphStringGetWidth ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    m Int32
+glyphStringGetWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_glyph_string_get_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method GlyphString::index_to_x
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", 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_glyph_string_index_to_x" pango_glyph_string_index_to_x :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    CInt ->                                 -- trailing : TBasicType TBoolean
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    IO ()
+
+
+glyphStringIndexToX ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Analysis ->                             -- analysis
+    Int32 ->                                -- index_
+    Bool ->                                 -- trailing
+    m (Int32)
+glyphStringIndexToX _obj text length_ analysis index_ trailing = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    let trailing' = (fromIntegral . fromEnum) trailing
+    x_pos <- allocMem :: IO (Ptr Int32)
+    pango_glyph_string_index_to_x _obj' text' length_ analysis' index_ trailing' x_pos
+    x_pos' <- peek x_pos
+    touchManagedPtr _obj
+    touchManagedPtr analysis
+    freeMem text'
+    freeMem x_pos
+    return x_pos'
+
+-- method GlyphString::set_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_len", 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_glyph_string_set_size" pango_glyph_string_set_size :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    Int32 ->                                -- new_len : TBasicType TInt32
+    IO ()
+
+
+glyphStringSetSize ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    Int32 ->                                -- new_len
+    m ()
+glyphStringSetSize _obj new_len = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_glyph_string_set_size _obj' new_len
+    touchManagedPtr _obj
+    return ()
+
+-- method GlyphString::x_to_index
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", 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_glyph_string_x_to_index" pango_glyph_string_x_to_index :: 
+    Ptr GlyphString ->                      -- _obj : TInterface "Pango" "GlyphString"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Int32 ->                                -- x_pos : TBasicType TInt32
+    Ptr Int32 ->                            -- index_ : TBasicType TInt32
+    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    IO ()
+
+
+glyphStringXToIndex ::
+    (MonadIO m) =>
+    GlyphString ->                          -- _obj
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Analysis ->                             -- analysis
+    Int32 ->                                -- x_pos
+    m (Int32,Int32)
+glyphStringXToIndex _obj text length_ analysis x_pos = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    text' <- textToCString text
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    index_ <- allocMem :: IO (Ptr Int32)
+    trailing <- allocMem :: IO (Ptr Int32)
+    pango_glyph_string_x_to_index _obj' text' length_ analysis' x_pos index_ trailing
+    index_' <- peek index_
+    trailing' <- peek trailing
+    touchManagedPtr _obj
+    touchManagedPtr analysis
+    freeMem text'
+    freeMem index_
+    freeMem trailing
+    return (index_', trailing')
+
+-- struct GlyphVisAttr
+newtype GlyphVisAttr = GlyphVisAttr (ForeignPtr GlyphVisAttr)
+noGlyphVisAttr :: Maybe GlyphVisAttr
+noGlyphVisAttr = Nothing
+
+glyphVisAttrReadIsClusterStart :: GlyphVisAttr -> IO Word32
+glyphVisAttrReadIsClusterStart s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+-- Enum Gravity
+
+data Gravity = 
+      GravitySouth
+    | GravityEast
+    | GravityNorth
+    | GravityWest
+    | GravityAuto
+    | AnotherGravity Int
+    deriving (Show, Eq)
+
+instance Enum Gravity where
+    fromEnum GravitySouth = 0
+    fromEnum GravityEast = 1
+    fromEnum GravityNorth = 2
+    fromEnum GravityWest = 3
+    fromEnum GravityAuto = 4
+    fromEnum (AnotherGravity k) = k
+
+    toEnum 0 = GravitySouth
+    toEnum 1 = GravityEast
+    toEnum 2 = GravityNorth
+    toEnum 3 = GravityWest
+    toEnum 4 = GravityAuto
+    toEnum k = AnotherGravity k
+
+foreign import ccall "pango_gravity_get_type" c_pango_gravity_get_type :: 
+    IO GType
+
+instance BoxedEnum Gravity where
+    boxedEnumType _ = c_pango_gravity_get_type
+
+-- Enum GravityHint
+
+data GravityHint = 
+      GravityHintNatural
+    | GravityHintStrong
+    | GravityHintLine
+    | AnotherGravityHint Int
+    deriving (Show, Eq)
+
+instance Enum GravityHint where
+    fromEnum GravityHintNatural = 0
+    fromEnum GravityHintStrong = 1
+    fromEnum GravityHintLine = 2
+    fromEnum (AnotherGravityHint k) = k
+
+    toEnum 0 = GravityHintNatural
+    toEnum 1 = GravityHintStrong
+    toEnum 2 = GravityHintLine
+    toEnum k = AnotherGravityHint k
+
+foreign import ccall "pango_gravity_hint_get_type" c_pango_gravity_hint_get_type :: 
+    IO GType
+
+instance BoxedEnum GravityHint where
+    boxedEnumType _ = c_pango_gravity_hint_get_type
+
+-- struct IncludedModule
+newtype IncludedModule = IncludedModule (ForeignPtr IncludedModule)
+noIncludedModule :: Maybe IncludedModule
+noIncludedModule = Nothing
+
+-- XXX Skipped getter for "IncludedModule:list" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- XXX Skipped getter for "IncludedModule:init" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- XXX Skipped getter for "IncludedModule:exit" :: Not implemented: "Wrapping foreign callbacks is not supported yet"
+
+-- struct Item
+newtype Item = Item (ForeignPtr Item)
+noItem :: Maybe Item
+noItem = Nothing
+
+foreign import ccall "pango_item_get_type" c_pango_item_get_type :: 
+    IO GType
+
+instance BoxedObject Item where
+    boxedType _ = c_pango_item_get_type
+
+itemReadOffset :: Item -> IO Int32
+itemReadOffset s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+itemReadLength :: Item -> IO Int32
+itemReadLength s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Int32
+    return val
+
+itemReadNumChars :: Item -> IO Int32
+itemReadNumChars s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Int32
+    return val
+
+itemReadAnalysis :: Item -> IO Analysis
+itemReadAnalysis s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Analysis)
+    val' <- (newPtr 48 Analysis) val
+    return val'
+
+-- method Item::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "Item"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_item_new" pango_item_new :: 
+    IO (Ptr Item)
+
+
+itemNew ::
+    (MonadIO m) =>
+    m Item
+itemNew  = liftIO $ do
+    result <- pango_item_new
+    result' <- (wrapBoxed Item) result
+    return result'
+
+-- method Item::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Item"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_item_copy" pango_item_copy :: 
+    Ptr Item ->                             -- _obj : TInterface "Pango" "Item"
+    IO (Ptr Item)
+
+
+itemCopy ::
+    (MonadIO m) =>
+    Item ->                                 -- _obj
+    m Item
+itemCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_item_copy _obj'
+    result' <- (wrapBoxed Item) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Item::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_item_free" pango_item_free :: 
+    Ptr Item ->                             -- _obj : TInterface "Pango" "Item"
+    IO ()
+
+
+itemFree ::
+    (MonadIO m) =>
+    Item ->                                 -- _obj
+    m ()
+itemFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_item_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Item::split
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_offset", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Item", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "split_offset", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Item"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_item_split" pango_item_split :: 
+    Ptr Item ->                             -- _obj : TInterface "Pango" "Item"
+    Int32 ->                                -- split_index : TBasicType TInt32
+    Int32 ->                                -- split_offset : TBasicType TInt32
+    IO (Ptr Item)
+
+
+itemSplit ::
+    (MonadIO m) =>
+    Item ->                                 -- _obj
+    Int32 ->                                -- split_index
+    Int32 ->                                -- split_offset
+    m Item
+itemSplit _obj split_index split_offset = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_item_split _obj' split_index split_offset
+    result' <- (wrapBoxed Item) result
+    touchManagedPtr _obj
+    return result'
+
+-- struct Language
+newtype Language = Language (ForeignPtr Language)
+noLanguage :: Maybe Language
+noLanguage = Nothing
+
+foreign import ccall "pango_language_get_type" c_pango_language_get_type :: 
+    IO GType
+
+instance BoxedObject Language where
+    boxedType _ = c_pango_language_get_type
+
+-- method Language::get_sample_string
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_get_sample_string" pango_language_get_sample_string :: 
+    Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
+    IO CString
+
+
+languageGetSampleString ::
+    (MonadIO m) =>
+    Language ->                             -- _obj
+    m T.Text
+languageGetSampleString _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_language_get_sample_string _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Language::get_scripts
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TCArray False (-1) 1 (TInterface "Pango" "Script")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_get_scripts" pango_language_get_scripts :: 
+    Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
+    Ptr Int32 ->                            -- num_scripts : TBasicType TInt32
+    IO (Ptr CUInt)
+
+
+languageGetScripts ::
+    (MonadIO m) =>
+    Language ->                             -- _obj
+    m [Script]
+languageGetScripts _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    num_scripts <- allocMem :: IO (Ptr Int32)
+    result <- pango_language_get_scripts _obj' num_scripts
+    num_scripts' <- peek num_scripts
+    result' <- (unpackStorableArrayWithLength num_scripts') result
+    let result'' = map (toEnum . fromIntegral) result'
+    touchManagedPtr _obj
+    freeMem num_scripts
+    return result''
+
+-- method Language::includes_script
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_includes_script" pango_language_includes_script :: 
+    Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
+    CUInt ->                                -- script : TInterface "Pango" "Script"
+    IO CInt
+
+
+languageIncludesScript ::
+    (MonadIO m) =>
+    Language ->                             -- _obj
+    Script ->                               -- script
+    m Bool
+languageIncludesScript _obj script = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let script' = (fromIntegral . fromEnum) script
+    result <- pango_language_includes_script _obj' script'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Language::matches
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "range_list", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "range_list", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_matches" pango_language_matches :: 
+    Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
+    CString ->                              -- range_list : TBasicType TUTF8
+    IO CInt
+
+
+languageMatches ::
+    (MonadIO m) =>
+    Language ->                             -- _obj
+    T.Text ->                               -- range_list
+    m Bool
+languageMatches _obj range_list = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    range_list' <- textToCString range_list
+    result <- pango_language_matches _obj' range_list'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    freeMem range_list'
+    return result'
+
+-- method Language::to_string
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_to_string" pango_language_to_string :: 
+    Ptr Language ->                         -- _obj : TInterface "Pango" "Language"
+    IO CString
+
+
+languageToString ::
+    (MonadIO m) =>
+    Language ->                             -- _obj
+    m T.Text
+languageToString _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_language_to_string _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- object Layout 
+newtype Layout = Layout (ForeignPtr Layout)
+noLayout :: Maybe Layout
+noLayout = Nothing
+
+foreign import ccall "pango_layout_get_type"
+    c_pango_layout_get_type :: IO GType
+
+type instance ParentTypes Layout = '[GObject.Object]
+
+instance GObject Layout where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_layout_get_type
+    
+
+class GObject o => LayoutK o
+instance (GObject o, IsDescendantOf Layout o) => LayoutK o
+
+toLayout :: LayoutK o => o -> IO Layout
+toLayout = unsafeCastTo Layout
+
+-- method Layout::new
+-- method type : Constructor
+-- Args : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Layout"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_new" pango_layout_new :: 
+    Ptr Context ->                          -- context : TInterface "Pango" "Context"
+    IO (Ptr Layout)
+
+
+layoutNew ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- context
+    m Layout
+layoutNew context = liftIO $ do
+    let context' = unsafeManagedPtrCastPtr context
+    result <- pango_layout_new context'
+    result' <- (wrapObject Layout) result
+    touchManagedPtr context
+    return result'
+
+-- method Layout::context_changed
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_context_changed" pango_layout_context_changed :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO ()
+
+
+layoutContextChanged ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m ()
+layoutContextChanged _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_layout_context_changed _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Layout"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_copy" pango_layout_copy :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr Layout)
+
+
+layoutCopy ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Layout
+layoutCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_copy _obj'
+    result' <- (wrapObject Layout) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_alignment
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Alignment"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_alignment" pango_layout_get_alignment :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CUInt
+
+
+layoutGetAlignment ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Alignment
+layoutGetAlignment _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_alignment _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_attributes
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "AttrList"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_attributes" pango_layout_get_attributes :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr AttrList)
+
+
+layoutGetAttributes ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m AttrList
+layoutGetAttributes _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_attributes _obj'
+    result' <- (newBoxed AttrList) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_auto_dir
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_auto_dir" pango_layout_get_auto_dir :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CInt
+
+
+layoutGetAutoDir ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Bool
+layoutGetAutoDir _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_auto_dir _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_baseline
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_baseline" pango_layout_get_baseline :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetBaseline ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetBaseline _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_baseline _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_character_count
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_character_count" pango_layout_get_character_count :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetCharacterCount ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetCharacterCount _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_character_count _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_context
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Context"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_context" pango_layout_get_context :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr Context)
+
+
+layoutGetContext ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Context
+layoutGetContext _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_context _obj'
+    result' <- (newObject Context) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_cursor_pos
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "strong_pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weak_pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", 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_layout_get_cursor_pos" pango_layout_get_cursor_pos :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    Ptr Rectangle ->                        -- strong_pos : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- weak_pos : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutGetCursorPos ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- index_
+    m (Rectangle,Rectangle)
+layoutGetCursorPos _obj index_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    strong_pos <- callocBytes 16 :: IO (Ptr Rectangle)
+    weak_pos <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_get_cursor_pos _obj' index_ strong_pos weak_pos
+    strong_pos' <- (wrapPtr Rectangle) strong_pos
+    weak_pos' <- (wrapPtr Rectangle) weak_pos
+    touchManagedPtr _obj
+    return (strong_pos', weak_pos')
+
+-- method Layout::get_ellipsize
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "EllipsizeMode"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_ellipsize" pango_layout_get_ellipsize :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CUInt
+
+
+layoutGetEllipsize ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m EllipsizeMode
+layoutGetEllipsize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_ellipsize _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_extents" pango_layout_get_extents :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutGetExtents ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m (Rectangle,Rectangle)
+layoutGetExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_get_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method Layout::get_font_description
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", 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_layout_get_font_description" pango_layout_get_font_description :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr FontDescription)
+
+
+layoutGetFontDescription ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m FontDescription
+layoutGetFontDescription _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_font_description _obj'
+    result' <- (newBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_height
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_height" pango_layout_get_height :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetHeight ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetHeight _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_height _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_indent
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_indent" pango_layout_get_indent :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetIndent ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetIndent _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_indent _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_iter
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutIter"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_iter" pango_layout_get_iter :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr LayoutIter)
+
+
+layoutGetIter ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m LayoutIter
+layoutGetIter _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_iter _obj'
+    result' <- (wrapBoxed LayoutIter) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_justify
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_justify" pango_layout_get_justify :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CInt
+
+
+layoutGetJustify ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Bool
+layoutGetJustify _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_justify _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_line" pango_layout_get_line :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- line : TBasicType TInt32
+    IO (Ptr LayoutLine)
+
+
+layoutGetLine ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- line
+    m LayoutLine
+layoutGetLine _obj line = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_line _obj' line
+    result' <- (newBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_line_count
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_line_count" pango_layout_get_line_count :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetLineCount ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetLineCount _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_line_count _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_line_readonly
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_line_readonly" pango_layout_get_line_readonly :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- line : TBasicType TInt32
+    IO (Ptr LayoutLine)
+
+
+layoutGetLineReadonly ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- line
+    m LayoutLine
+layoutGetLineReadonly _obj line = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_line_readonly _obj' line
+    result' <- (newBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_lines
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGSList (TInterface "Pango" "LayoutLine")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_lines" pango_layout_get_lines :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr (GSList (Ptr LayoutLine)))
+
+
+layoutGetLines ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m [LayoutLine]
+layoutGetLines _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_lines _obj'
+    result' <- unpackGSList result
+    result'' <- mapM (newBoxed LayoutLine) result'
+    touchManagedPtr _obj
+    return result''
+
+-- method Layout::get_lines_readonly
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGSList (TInterface "Pango" "LayoutLine")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_lines_readonly" pango_layout_get_lines_readonly :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr (GSList (Ptr LayoutLine)))
+
+
+layoutGetLinesReadonly ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m [LayoutLine]
+layoutGetLinesReadonly _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_lines_readonly _obj'
+    result' <- unpackGSList result
+    result'' <- mapM (newBoxed LayoutLine) result'
+    touchManagedPtr _obj
+    return result''
+
+-- method Layout::get_log_attrs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TCArray False (-1) 2 (TInterface "Pango" "LogAttr"), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferContainer},Arg {argName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_log_attrs" pango_layout_get_log_attrs :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr (Ptr LogAttr) ->                    -- attrs : TCArray False (-1) 2 (TInterface "Pango" "LogAttr")
+    Ptr Int32 ->                            -- n_attrs : TBasicType TInt32
+    IO ()
+
+
+layoutGetLogAttrs ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m ([LogAttr])
+layoutGetLogAttrs _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    attrs <- allocMem :: IO (Ptr (Ptr LogAttr))
+    n_attrs <- allocMem :: IO (Ptr Int32)
+    pango_layout_get_log_attrs _obj' attrs n_attrs
+    n_attrs' <- peek n_attrs
+    attrs' <- peek attrs
+    attrs'' <- (unpackBlockArrayWithLength 52 n_attrs') attrs'
+    attrs''' <- mapM (newPtr 52 LogAttr) attrs''
+    freeMem attrs'
+    touchManagedPtr _obj
+    freeMem attrs
+    freeMem n_attrs
+    return attrs'''
+
+-- method Layout::get_log_attrs_readonly
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_attrs", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TCArray False (-1) 1 (TInterface "Pango" "LogAttr")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_log_attrs_readonly" pango_layout_get_log_attrs_readonly :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr Int32 ->                            -- n_attrs : TBasicType TInt32
+    IO (Ptr LogAttr)
+
+
+layoutGetLogAttrsReadonly ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m [LogAttr]
+layoutGetLogAttrsReadonly _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    n_attrs <- allocMem :: IO (Ptr Int32)
+    result <- pango_layout_get_log_attrs_readonly _obj' n_attrs
+    n_attrs' <- peek n_attrs
+    result' <- (unpackBlockArrayWithLength 52 n_attrs') result
+    result'' <- mapM (newPtr 52 LogAttr) result'
+    touchManagedPtr _obj
+    freeMem n_attrs
+    return result''
+
+-- method Layout::get_pixel_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_pixel_extents" pango_layout_get_pixel_extents :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutGetPixelExtents ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m (Rectangle,Rectangle)
+layoutGetPixelExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_get_pixel_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method Layout::get_pixel_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_pixel_size" pango_layout_get_pixel_size :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr Int32 ->                            -- width : TBasicType TInt32
+    Ptr Int32 ->                            -- height : TBasicType TInt32
+    IO ()
+
+
+layoutGetPixelSize ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m (Int32,Int32)
+layoutGetPixelSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    width <- allocMem :: IO (Ptr Int32)
+    height <- allocMem :: IO (Ptr Int32)
+    pango_layout_get_pixel_size _obj' width height
+    width' <- peek width
+    height' <- peek height
+    touchManagedPtr _obj
+    freeMem width
+    freeMem height
+    return (width', height')
+
+-- method Layout::get_serial
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_serial" pango_layout_get_serial :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Word32
+
+
+layoutGetSerial ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Word32
+layoutGetSerial _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_serial _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_single_paragraph_mode
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_single_paragraph_mode" pango_layout_get_single_paragraph_mode :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CInt
+
+
+layoutGetSingleParagraphMode ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Bool
+layoutGetSingleParagraphMode _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_single_paragraph_mode _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_size" pango_layout_get_size :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr Int32 ->                            -- width : TBasicType TInt32
+    Ptr Int32 ->                            -- height : TBasicType TInt32
+    IO ()
+
+
+layoutGetSize ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m (Int32,Int32)
+layoutGetSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    width <- allocMem :: IO (Ptr Int32)
+    height <- allocMem :: IO (Ptr Int32)
+    pango_layout_get_size _obj' width height
+    width' <- peek width
+    height' <- peek height
+    touchManagedPtr _obj
+    freeMem width
+    freeMem height
+    return (width', height')
+
+-- method Layout::get_spacing
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_spacing" pango_layout_get_spacing :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetSpacing ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetSpacing _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_spacing _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_tabs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "TabArray"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_tabs" pango_layout_get_tabs :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO (Ptr TabArray)
+
+
+layoutGetTabs ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m TabArray
+layoutGetTabs _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_tabs _obj'
+    result' <- (wrapBoxed TabArray) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_text
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_text" pango_layout_get_text :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CString
+
+
+layoutGetText ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m T.Text
+layoutGetText _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_text _obj'
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::get_unknown_glyphs_count
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_unknown_glyphs_count" pango_layout_get_unknown_glyphs_count :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetUnknownGlyphsCount ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetUnknownGlyphsCount _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_unknown_glyphs_count _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_width" pango_layout_get_width :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO Int32
+
+
+layoutGetWidth ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Int32
+layoutGetWidth _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_width _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method Layout::get_wrap
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "WrapMode"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_get_wrap" pango_layout_get_wrap :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CUInt
+
+
+layoutGetWrap ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m WrapMode
+layoutGetWrap _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_get_wrap _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::index_to_line_x
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", 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_layout_index_to_line_x" pango_layout_index_to_line_x :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    CInt ->                                 -- trailing : TBasicType TBoolean
+    Ptr Int32 ->                            -- line : TBasicType TInt32
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    IO ()
+
+
+layoutIndexToLineX ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- index_
+    Bool ->                                 -- trailing
+    m (Int32,Int32)
+layoutIndexToLineX _obj index_ trailing = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let trailing' = (fromIntegral . fromEnum) trailing
+    line <- allocMem :: IO (Ptr Int32)
+    x_pos <- allocMem :: IO (Ptr Int32)
+    pango_layout_index_to_line_x _obj' index_ trailing' line x_pos
+    line' <- peek line
+    x_pos' <- peek x_pos
+    touchManagedPtr _obj
+    freeMem line
+    freeMem x_pos
+    return (line', x_pos')
+
+-- method Layout::index_to_pos
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pos", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", 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_layout_index_to_pos" pango_layout_index_to_pos :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    Ptr Rectangle ->                        -- pos : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIndexToPos ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- index_
+    m (Rectangle)
+layoutIndexToPos _obj index_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pos <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_index_to_pos _obj' index_ pos
+    pos' <- (wrapPtr Rectangle) pos
+    touchManagedPtr _obj
+    return pos'
+
+-- method Layout::is_ellipsized
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_is_ellipsized" pango_layout_is_ellipsized :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CInt
+
+
+layoutIsEllipsized ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Bool
+layoutIsEllipsized _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_is_ellipsized _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::is_wrapped
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_is_wrapped" pango_layout_is_wrapped :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    IO CInt
+
+
+layoutIsWrapped ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    m Bool
+layoutIsWrapped _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_layout_is_wrapped _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Layout::move_cursor_visually
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "strong", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_trailing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_index", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "new_trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "strong", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_trailing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", 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_layout_move_cursor_visually" pango_layout_move_cursor_visually :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CInt ->                                 -- strong : TBasicType TBoolean
+    Int32 ->                                -- old_index : TBasicType TInt32
+    Int32 ->                                -- old_trailing : TBasicType TInt32
+    Int32 ->                                -- direction : TBasicType TInt32
+    Ptr Int32 ->                            -- new_index : TBasicType TInt32
+    Ptr Int32 ->                            -- new_trailing : TBasicType TInt32
+    IO ()
+
+
+layoutMoveCursorVisually ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- strong
+    Int32 ->                                -- old_index
+    Int32 ->                                -- old_trailing
+    Int32 ->                                -- direction
+    m (Int32,Int32)
+layoutMoveCursorVisually _obj strong old_index old_trailing direction = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let strong' = (fromIntegral . fromEnum) strong
+    new_index <- allocMem :: IO (Ptr Int32)
+    new_trailing <- allocMem :: IO (Ptr Int32)
+    pango_layout_move_cursor_visually _obj' strong' old_index old_trailing direction new_index new_trailing
+    new_index' <- peek new_index
+    new_trailing' <- peek new_trailing
+    touchManagedPtr _obj
+    freeMem new_index
+    freeMem new_trailing
+    return (new_index', new_trailing')
+
+-- method Layout::set_alignment
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignment", argType = TInterface "Pango" "Alignment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignment", argType = TInterface "Pango" "Alignment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_alignment" pango_layout_set_alignment :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CUInt ->                                -- alignment : TInterface "Pango" "Alignment"
+    IO ()
+
+
+layoutSetAlignment ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Alignment ->                            -- alignment
+    m ()
+layoutSetAlignment _obj alignment = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let alignment' = (fromIntegral . fromEnum) alignment
+    pango_layout_set_alignment _obj' alignment'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_attributes
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_attributes" pango_layout_set_attributes :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr AttrList ->                         -- attrs : TInterface "Pango" "AttrList"
+    IO ()
+
+
+layoutSetAttributes ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Maybe (AttrList) ->                     -- attrs
+    m ()
+layoutSetAttributes _obj attrs = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeAttrs <- case attrs of
+        Nothing -> return nullPtr
+        Just jAttrs -> do
+            let jAttrs' = unsafeManagedPtrGetPtr jAttrs
+            return jAttrs'
+    pango_layout_set_attributes _obj' maybeAttrs
+    touchManagedPtr _obj
+    whenJust attrs touchManagedPtr
+    return ()
+
+-- method Layout::set_auto_dir
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "auto_dir", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "auto_dir", 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_layout_set_auto_dir" pango_layout_set_auto_dir :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CInt ->                                 -- auto_dir : TBasicType TBoolean
+    IO ()
+
+
+layoutSetAutoDir ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- auto_dir
+    m ()
+layoutSetAutoDir _obj auto_dir = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let auto_dir' = (fromIntegral . fromEnum) auto_dir
+    pango_layout_set_auto_dir _obj' auto_dir'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_ellipsize
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ellipsize", argType = TInterface "Pango" "EllipsizeMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ellipsize", argType = TInterface "Pango" "EllipsizeMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_ellipsize" pango_layout_set_ellipsize :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CUInt ->                                -- ellipsize : TInterface "Pango" "EllipsizeMode"
+    IO ()
+
+
+layoutSetEllipsize ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    EllipsizeMode ->                        -- ellipsize
+    m ()
+layoutSetEllipsize _obj ellipsize = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let ellipsize' = (fromIntegral . fromEnum) ellipsize
+    pango_layout_set_ellipsize _obj' ellipsize'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_font_description
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_font_description" pango_layout_set_font_description :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr FontDescription ->                  -- desc : TInterface "Pango" "FontDescription"
+    IO ()
+
+
+layoutSetFontDescription ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Maybe (FontDescription) ->              -- desc
+    m ()
+layoutSetFontDescription _obj desc = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeDesc <- case desc of
+        Nothing -> return nullPtr
+        Just jDesc -> do
+            let jDesc' = unsafeManagedPtrGetPtr jDesc
+            return jDesc'
+    pango_layout_set_font_description _obj' maybeDesc
+    touchManagedPtr _obj
+    whenJust desc touchManagedPtr
+    return ()
+
+-- method Layout::set_height
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", 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_layout_set_height" pango_layout_set_height :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- height : TBasicType TInt32
+    IO ()
+
+
+layoutSetHeight ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- height
+    m ()
+layoutSetHeight _obj height = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_layout_set_height _obj' height
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_indent
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "indent", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "indent", 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_layout_set_indent" pango_layout_set_indent :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- indent : TBasicType TInt32
+    IO ()
+
+
+layoutSetIndent ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- indent
+    m ()
+layoutSetIndent _obj indent = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_layout_set_indent _obj' indent
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_justify
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "justify", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "justify", 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_layout_set_justify" pango_layout_set_justify :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CInt ->                                 -- justify : TBasicType TBoolean
+    IO ()
+
+
+layoutSetJustify ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- justify
+    m ()
+layoutSetJustify _obj justify = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let justify' = (fromIntegral . fromEnum) justify
+    pango_layout_set_justify _obj' justify'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_markup
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", 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_layout_set_markup" pango_layout_set_markup :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CString ->                              -- markup : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    IO ()
+
+
+layoutSetMarkup ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- markup
+    Int32 ->                                -- length
+    m ()
+layoutSetMarkup _obj markup length_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    markup' <- textToCString markup
+    pango_layout_set_markup _obj' markup' length_
+    touchManagedPtr _obj
+    freeMem markup'
+    return ()
+
+-- method Layout::set_markup_with_accel
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_markup_with_accel" pango_layout_set_markup_with_accel :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CString ->                              -- markup : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    CInt ->                                 -- accel_marker : TBasicType TUniChar
+    Ptr CInt ->                             -- accel_char : TBasicType TUniChar
+    IO ()
+
+
+layoutSetMarkupWithAccel ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- markup
+    Int32 ->                                -- length
+    Char ->                                 -- accel_marker
+    m (Char)
+layoutSetMarkupWithAccel _obj markup length_ accel_marker = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    markup' <- textToCString markup
+    let accel_marker' = (fromIntegral . ord) accel_marker
+    accel_char <- allocMem :: IO (Ptr CInt)
+    pango_layout_set_markup_with_accel _obj' markup' length_ accel_marker' accel_char
+    accel_char' <- peek accel_char
+    let accel_char'' = (chr . fromIntegral) accel_char'
+    touchManagedPtr _obj
+    freeMem markup'
+    freeMem accel_char
+    return accel_char''
+
+-- method Layout::set_single_paragraph_mode
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", 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_layout_set_single_paragraph_mode" pango_layout_set_single_paragraph_mode :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CInt ->                                 -- setting : TBasicType TBoolean
+    IO ()
+
+
+layoutSetSingleParagraphMode ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Bool ->                                 -- setting
+    m ()
+layoutSetSingleParagraphMode _obj setting = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let setting' = (fromIntegral . fromEnum) setting
+    pango_layout_set_single_paragraph_mode _obj' setting'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_spacing
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spacing", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "spacing", 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_layout_set_spacing" pango_layout_set_spacing :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- spacing : TBasicType TInt32
+    IO ()
+
+
+layoutSetSpacing ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- spacing
+    m ()
+layoutSetSpacing _obj spacing = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_layout_set_spacing _obj' spacing
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_tabs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tabs", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tabs", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_tabs" pango_layout_set_tabs :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Ptr TabArray ->                         -- tabs : TInterface "Pango" "TabArray"
+    IO ()
+
+
+layoutSetTabs ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Maybe (TabArray) ->                     -- tabs
+    m ()
+layoutSetTabs _obj tabs = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeTabs <- case tabs of
+        Nothing -> return nullPtr
+        Just jTabs -> do
+            let jTabs' = unsafeManagedPtrGetPtr jTabs
+            return jTabs'
+    pango_layout_set_tabs _obj' maybeTabs
+    touchManagedPtr _obj
+    whenJust tabs touchManagedPtr
+    return ()
+
+-- method Layout::set_text
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", 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_layout_set_text" pango_layout_set_text :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    IO ()
+
+
+layoutSetText ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    m ()
+layoutSetText _obj text length_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    text' <- textToCString text
+    pango_layout_set_text _obj' text' length_
+    touchManagedPtr _obj
+    freeMem text'
+    return ()
+
+-- method Layout::set_width
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", 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_layout_set_width" pango_layout_set_width :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- width : TBasicType TInt32
+    IO ()
+
+
+layoutSetWidth ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- width
+    m ()
+layoutSetWidth _obj width = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_layout_set_width _obj' width
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::set_wrap
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wrap", argType = TInterface "Pango" "WrapMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wrap", argType = TInterface "Pango" "WrapMode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_set_wrap" pango_layout_set_wrap :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    CUInt ->                                -- wrap : TInterface "Pango" "WrapMode"
+    IO ()
+
+
+layoutSetWrap ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    WrapMode ->                             -- wrap
+    m ()
+layoutSetWrap _obj wrap = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let wrap' = (fromIntegral . fromEnum) wrap
+    pango_layout_set_wrap _obj' wrap'
+    touchManagedPtr _obj
+    return ()
+
+-- method Layout::xy_to_index
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_xy_to_index" pango_layout_xy_to_index :: 
+    Ptr Layout ->                           -- _obj : TInterface "Pango" "Layout"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    Ptr Int32 ->                            -- index_ : TBasicType TInt32
+    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    IO CInt
+
+
+layoutXyToIndex ::
+    (MonadIO m, LayoutK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    m (Bool,Int32,Int32)
+layoutXyToIndex _obj x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    index_ <- allocMem :: IO (Ptr Int32)
+    trailing <- allocMem :: IO (Ptr Int32)
+    result <- pango_layout_xy_to_index _obj' x y index_ trailing
+    let result' = (/= 0) result
+    index_' <- peek index_
+    trailing' <- peek trailing
+    touchManagedPtr _obj
+    freeMem index_
+    freeMem trailing
+    return (result', index_', trailing')
+
+-- struct LayoutIter
+newtype LayoutIter = LayoutIter (ForeignPtr LayoutIter)
+noLayoutIter :: Maybe LayoutIter
+noLayoutIter = Nothing
+
+foreign import ccall "pango_layout_iter_get_type" c_pango_layout_iter_get_type :: 
+    IO GType
+
+instance BoxedObject LayoutIter where
+    boxedType _ = c_pango_layout_iter_get_type
+
+-- method LayoutIter::at_last_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_at_last_line" pango_layout_iter_at_last_line :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO CInt
+
+
+layoutIterAtLastLine ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Bool
+layoutIterAtLastLine _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_at_last_line _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutIter"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_copy" pango_layout_iter_copy :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr LayoutIter)
+
+
+layoutIterCopy ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m LayoutIter
+layoutIterCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_copy _obj'
+    result' <- (wrapBoxed LayoutIter) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_free" pango_layout_iter_free :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO ()
+
+
+layoutIterFree ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m ()
+layoutIterFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_layout_iter_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method LayoutIter::get_baseline
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_baseline" pango_layout_iter_get_baseline :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO Int32
+
+
+layoutIterGetBaseline ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Int32
+layoutIterGetBaseline _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_baseline _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method LayoutIter::get_char_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_char_extents" pango_layout_iter_get_char_extents :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIterGetCharExtents ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Rectangle)
+layoutIterGetCharExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_iter_get_char_extents _obj' logical_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return logical_rect'
+
+-- method LayoutIter::get_cluster_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_cluster_extents" pango_layout_iter_get_cluster_extents :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIterGetClusterExtents ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutIterGetClusterExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_iter_get_cluster_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutIter::get_index
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_index" pango_layout_iter_get_index :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO Int32
+
+
+layoutIterGetIndex ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Int32
+layoutIterGetIndex _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_index _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method LayoutIter::get_layout
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Layout"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_layout" pango_layout_iter_get_layout :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr Layout)
+
+
+layoutIterGetLayout ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Layout
+layoutIterGetLayout _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_layout _obj'
+    result' <- (newObject Layout) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::get_layout_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_layout_extents" pango_layout_iter_get_layout_extents :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIterGetLayoutExtents ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutIterGetLayoutExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_iter_get_layout_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutIter::get_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_line" pango_layout_iter_get_line :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr LayoutLine)
+
+
+layoutIterGetLine ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m LayoutLine
+layoutIterGetLine _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_line _obj'
+    result' <- (wrapBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::get_line_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_line_extents" pango_layout_iter_get_line_extents :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIterGetLineExtents ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutIterGetLineExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_iter_get_line_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutIter::get_line_readonly
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_line_readonly" pango_layout_iter_get_line_readonly :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr LayoutLine)
+
+
+layoutIterGetLineReadonly ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m LayoutLine
+layoutIterGetLineReadonly _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_line_readonly _obj'
+    result' <- (newBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::get_line_yrange
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y0_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y1_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_line_yrange" pango_layout_iter_get_line_yrange :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Int32 ->                            -- y0_ : TBasicType TInt32
+    Ptr Int32 ->                            -- y1_ : TBasicType TInt32
+    IO ()
+
+
+layoutIterGetLineYrange ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Int32,Int32)
+layoutIterGetLineYrange _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    y0_ <- allocMem :: IO (Ptr Int32)
+    y1_ <- allocMem :: IO (Ptr Int32)
+    pango_layout_iter_get_line_yrange _obj' y0_ y1_
+    y0_' <- peek y0_
+    y1_' <- peek y1_
+    touchManagedPtr _obj
+    freeMem y0_
+    freeMem y1_
+    return (y0_', y1_')
+
+-- method LayoutIter::get_run
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphItem"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_run" pango_layout_iter_get_run :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr GlyphItem)
+
+
+layoutIterGetRun ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m GlyphItem
+layoutIterGetRun _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_run _obj'
+    result' <- (newBoxed GlyphItem) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::get_run_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_run_extents" pango_layout_iter_get_run_extents :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutIterGetRunExtents ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutIterGetRunExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_iter_get_run_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutIter::get_run_readonly
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "GlyphItem"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_get_run_readonly" pango_layout_iter_get_run_readonly :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO (Ptr GlyphItem)
+
+
+layoutIterGetRunReadonly ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m GlyphItem
+layoutIterGetRunReadonly _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_get_run_readonly _obj'
+    result' <- (newBoxed GlyphItem) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::next_char
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_next_char" pango_layout_iter_next_char :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO CInt
+
+
+layoutIterNextChar ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Bool
+layoutIterNextChar _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_next_char _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::next_cluster
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_next_cluster" pango_layout_iter_next_cluster :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO CInt
+
+
+layoutIterNextCluster ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Bool
+layoutIterNextCluster _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_next_cluster _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::next_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_next_line" pango_layout_iter_next_line :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO CInt
+
+
+layoutIterNextLine ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Bool
+layoutIterNextLine _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_next_line _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutIter::next_run
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_iter_next_run" pango_layout_iter_next_run :: 
+    Ptr LayoutIter ->                       -- _obj : TInterface "Pango" "LayoutIter"
+    IO CInt
+
+
+layoutIterNextRun ::
+    (MonadIO m) =>
+    LayoutIter ->                           -- _obj
+    m Bool
+layoutIterNextRun _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_iter_next_run _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- struct LayoutLine
+newtype LayoutLine = LayoutLine (ForeignPtr LayoutLine)
+noLayoutLine :: Maybe LayoutLine
+noLayoutLine = Nothing
+
+foreign import ccall "pango_layout_line_get_type" c_pango_layout_line_get_type :: 
+    IO GType
+
+instance BoxedObject LayoutLine where
+    boxedType _ = c_pango_layout_line_get_type
+
+layoutLineReadLayout :: LayoutLine -> IO Layout
+layoutLineReadLayout s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr Layout)
+    val' <- (newObject Layout) val
+    return val'
+
+layoutLineReadStartIndex :: LayoutLine -> IO Int32
+layoutLineReadStartIndex s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Int32
+    return val
+
+layoutLineReadLength :: LayoutLine -> IO Int32
+layoutLineReadLength s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 12) :: IO Int32
+    return val
+
+layoutLineReadRuns :: LayoutLine -> IO ([Ptr ()])
+layoutLineReadRuns s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO (Ptr (GSList (Ptr ())))
+    val' <- unpackGSList val
+    return val'
+
+layoutLineReadIsParagraphStart :: LayoutLine -> IO Word32
+layoutLineReadIsParagraphStart s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO Word32
+    return val
+
+layoutLineReadResolvedDir :: LayoutLine -> IO Word32
+layoutLineReadResolvedDir s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 28) :: IO Word32
+    return val
+
+-- method LayoutLine::get_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_line_get_extents" pango_layout_line_get_extents :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutLineGetExtents ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutLineGetExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_line_get_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutLine::get_pixel_extents
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ink_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "logical_rect", argType = TInterface "Pango" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_line_get_pixel_extents" pango_layout_line_get_pixel_extents :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    Ptr Rectangle ->                        -- ink_rect : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- logical_rect : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+layoutLineGetPixelExtents ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    m (Rectangle,Rectangle)
+layoutLineGetPixelExtents _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ink_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    logical_rect <- callocBytes 16 :: IO (Ptr Rectangle)
+    pango_layout_line_get_pixel_extents _obj' ink_rect logical_rect
+    ink_rect' <- (wrapPtr Rectangle) ink_rect
+    logical_rect' <- (wrapPtr Rectangle) logical_rect
+    touchManagedPtr _obj
+    return (ink_rect', logical_rect')
+
+-- method LayoutLine::get_x_ranges
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ranges", argType = TCArray False (-1) 4 (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_ranges", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_ranges", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "end_index", 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_layout_line_get_x_ranges" pango_layout_line_get_x_ranges :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    Int32 ->                                -- start_index : TBasicType TInt32
+    Int32 ->                                -- end_index : TBasicType TInt32
+    Ptr (Ptr Int32) ->                      -- ranges : TCArray False (-1) 4 (TBasicType TInt32)
+    Ptr Int32 ->                            -- n_ranges : TBasicType TInt32
+    IO ()
+
+
+layoutLineGetXRanges ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    Int32 ->                                -- start_index
+    Int32 ->                                -- end_index
+    m ([Int32])
+layoutLineGetXRanges _obj start_index end_index = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    ranges <- allocMem :: IO (Ptr (Ptr Int32))
+    n_ranges <- allocMem :: IO (Ptr Int32)
+    pango_layout_line_get_x_ranges _obj' start_index end_index ranges n_ranges
+    n_ranges' <- peek n_ranges
+    ranges' <- peek ranges
+    ranges'' <- (unpackStorableArrayWithLength n_ranges') ranges'
+    freeMem ranges'
+    touchManagedPtr _obj
+    freeMem ranges
+    freeMem n_ranges
+    return ranges''
+
+-- method LayoutLine::index_to_x
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "trailing", 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_layout_line_index_to_x" pango_layout_line_index_to_x :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    Int32 ->                                -- index_ : TBasicType TInt32
+    CInt ->                                 -- trailing : TBasicType TBoolean
+    Ptr Int32 ->                            -- x_pos : TBasicType TInt32
+    IO ()
+
+
+layoutLineIndexToX ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    Int32 ->                                -- index_
+    Bool ->                                 -- trailing
+    m (Int32)
+layoutLineIndexToX _obj index_ trailing = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let trailing' = (fromIntegral . fromEnum) trailing
+    x_pos <- allocMem :: IO (Ptr Int32)
+    pango_layout_line_index_to_x _obj' index_ trailing' x_pos
+    x_pos' <- peek x_pos
+    touchManagedPtr _obj
+    freeMem x_pos
+    return x_pos'
+
+-- method LayoutLine::ref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_line_ref" pango_layout_line_ref :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    IO (Ptr LayoutLine)
+
+
+layoutLineRef ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    m LayoutLine
+layoutLineRef _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_layout_line_ref _obj'
+    result' <- (wrapBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method LayoutLine::unref
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_line_unref" pango_layout_line_unref :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    IO ()
+
+
+layoutLineUnref ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    m ()
+layoutLineUnref _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_layout_line_unref _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method LayoutLine::x_to_index
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index_", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "trailing", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x_pos", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_layout_line_x_to_index" pango_layout_line_x_to_index :: 
+    Ptr LayoutLine ->                       -- _obj : TInterface "Pango" "LayoutLine"
+    Int32 ->                                -- x_pos : TBasicType TInt32
+    Ptr Int32 ->                            -- index_ : TBasicType TInt32
+    Ptr Int32 ->                            -- trailing : TBasicType TInt32
+    IO CInt
+
+
+layoutLineXToIndex ::
+    (MonadIO m) =>
+    LayoutLine ->                           -- _obj
+    Int32 ->                                -- x_pos
+    m (Bool,Int32,Int32)
+layoutLineXToIndex _obj x_pos = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    index_ <- allocMem :: IO (Ptr Int32)
+    trailing <- allocMem :: IO (Ptr Int32)
+    result <- pango_layout_line_x_to_index _obj' x_pos index_ trailing
+    let result' = (/= 0) result
+    index_' <- peek index_
+    trailing' <- peek trailing
+    touchManagedPtr _obj
+    freeMem index_
+    freeMem trailing
+    return (result', index_', trailing')
+
+-- struct LogAttr
+newtype LogAttr = LogAttr (ForeignPtr LogAttr)
+noLogAttr :: Maybe LogAttr
+noLogAttr = Nothing
+
+logAttrReadIsLineBreak :: LogAttr -> IO Word32
+logAttrReadIsLineBreak s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+logAttrReadIsMandatoryBreak :: LogAttr -> IO Word32
+logAttrReadIsMandatoryBreak s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Word32
+    return val
+
+logAttrReadIsCharBreak :: LogAttr -> IO Word32
+logAttrReadIsCharBreak s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Word32
+    return val
+
+logAttrReadIsWhite :: LogAttr -> IO Word32
+logAttrReadIsWhite s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 12) :: IO Word32
+    return val
+
+logAttrReadIsCursorPosition :: LogAttr -> IO Word32
+logAttrReadIsCursorPosition s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO Word32
+    return val
+
+logAttrReadIsWordStart :: LogAttr -> IO Word32
+logAttrReadIsWordStart s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 20) :: IO Word32
+    return val
+
+logAttrReadIsWordEnd :: LogAttr -> IO Word32
+logAttrReadIsWordEnd s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO Word32
+    return val
+
+logAttrReadIsSentenceBoundary :: LogAttr -> IO Word32
+logAttrReadIsSentenceBoundary s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 28) :: IO Word32
+    return val
+
+logAttrReadIsSentenceStart :: LogAttr -> IO Word32
+logAttrReadIsSentenceStart s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO Word32
+    return val
+
+logAttrReadIsSentenceEnd :: LogAttr -> IO Word32
+logAttrReadIsSentenceEnd s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 36) :: IO Word32
+    return val
+
+logAttrReadBackspaceDeletesCharacter :: LogAttr -> IO Word32
+logAttrReadBackspaceDeletesCharacter s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 40) :: IO Word32
+    return val
+
+logAttrReadIsExpandableSpace :: LogAttr -> IO Word32
+logAttrReadIsExpandableSpace s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 44) :: IO Word32
+    return val
+
+logAttrReadIsWordBoundary :: LogAttr -> IO Word32
+logAttrReadIsWordBoundary s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 48) :: IO Word32
+    return val
+
+-- struct Map
+newtype Map = Map (ForeignPtr Map)
+noMap :: Maybe Map
+noMap = Nothing
+
+-- struct MapEntry
+newtype MapEntry = MapEntry (ForeignPtr MapEntry)
+noMapEntry :: Maybe MapEntry
+noMapEntry = Nothing
+
+-- struct Matrix
+newtype Matrix = Matrix (ForeignPtr Matrix)
+noMatrix :: Maybe Matrix
+noMatrix = Nothing
+
+foreign import ccall "pango_matrix_get_type" c_pango_matrix_get_type :: 
+    IO GType
+
+instance BoxedObject Matrix where
+    boxedType _ = c_pango_matrix_get_type
+
+matrixReadXx :: Matrix -> IO Double
+matrixReadXx s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+matrixReadXy :: Matrix -> IO Double
+matrixReadXy s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+matrixReadYx :: Matrix -> IO Double
+matrixReadYx s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 16) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+matrixReadYy :: Matrix -> IO Double
+matrixReadYy s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 24) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+matrixReadX0 :: Matrix -> IO Double
+matrixReadX0 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 32) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+matrixReadY0 :: Matrix -> IO Double
+matrixReadY0 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 40) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+-- method Matrix::concat
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_concat" pango_matrix_concat :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    Ptr Matrix ->                           -- new_matrix : TInterface "Pango" "Matrix"
+    IO ()
+
+
+matrixConcat ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Matrix ->                               -- new_matrix
+    m ()
+matrixConcat _obj new_matrix = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let new_matrix' = unsafeManagedPtrGetPtr new_matrix
+    pango_matrix_concat _obj' new_matrix'
+    touchManagedPtr _obj
+    touchManagedPtr new_matrix
+    return ()
+
+-- method Matrix::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Matrix"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_copy" pango_matrix_copy :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    IO (Ptr Matrix)
+
+
+matrixCopy ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    m Matrix
+matrixCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_matrix_copy _obj'
+    result' <- (wrapBoxed Matrix) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Matrix::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_free" pango_matrix_free :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    IO ()
+
+
+matrixFree ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    m ()
+matrixFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_matrix_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Matrix::get_font_scale_factor
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TDouble
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_get_font_scale_factor" pango_matrix_get_font_scale_factor :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    IO CDouble
+
+
+matrixGetFontScaleFactor ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    m Double
+matrixGetFontScaleFactor _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_matrix_get_font_scale_factor _obj'
+    let result' = realToFrac result
+    touchManagedPtr _obj
+    return result'
+
+-- method Matrix::rotate
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "degrees", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "degrees", 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_matrix_rotate" pango_matrix_rotate :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    CDouble ->                              -- degrees : TBasicType TDouble
+    IO ()
+
+
+matrixRotate ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Double ->                               -- degrees
+    m ()
+matrixRotate _obj degrees = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let degrees' = realToFrac degrees
+    pango_matrix_rotate _obj' degrees'
+    touchManagedPtr _obj
+    return ()
+
+-- method Matrix::scale
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "scale_y", 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_matrix_scale" pango_matrix_scale :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    CDouble ->                              -- scale_x : TBasicType TDouble
+    CDouble ->                              -- scale_y : TBasicType TDouble
+    IO ()
+
+
+matrixScale ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Double ->                               -- scale_x
+    Double ->                               -- scale_y
+    m ()
+matrixScale _obj scale_x scale_y = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let scale_x' = realToFrac scale_x
+    let scale_y' = realToFrac scale_y
+    pango_matrix_scale _obj' scale_x' scale_y'
+    touchManagedPtr _obj
+    return ()
+
+-- method Matrix::transform_distance
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "dy", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dx", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "dy", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_transform_distance" pango_matrix_transform_distance :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    Ptr CDouble ->                          -- dx : TBasicType TDouble
+    Ptr CDouble ->                          -- dy : TBasicType TDouble
+    IO ()
+
+
+matrixTransformDistance ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Double ->                               -- dx
+    Double ->                               -- dy
+    m (Double,Double)
+matrixTransformDistance _obj dx dy = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let dx' = realToFrac dx
+    dx'' <- allocMem :: IO (Ptr CDouble)
+    poke dx'' dx'
+    let dy' = realToFrac dy
+    dy'' <- allocMem :: IO (Ptr CDouble)
+    poke dy'' dy'
+    pango_matrix_transform_distance _obj' dx'' dy''
+    dx''' <- peek dx''
+    let dx'''' = realToFrac dx'''
+    dy''' <- peek dy''
+    let dy'''' = realToFrac dy'''
+    touchManagedPtr _obj
+    freeMem dx''
+    freeMem dy''
+    return (dx'''', dy'''')
+
+-- XXX Could not generate method Matrix::transform_pixel_rectangle
+-- Error was : Not implemented: "Nullable inout structs not supported"
+-- method Matrix::transform_point
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_matrix_transform_point" pango_matrix_transform_point :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    Ptr CDouble ->                          -- x : TBasicType TDouble
+    Ptr CDouble ->                          -- y : TBasicType TDouble
+    IO ()
+
+
+matrixTransformPoint ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Double ->                               -- x
+    Double ->                               -- y
+    m (Double,Double)
+matrixTransformPoint _obj x y = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let x' = realToFrac x
+    x'' <- allocMem :: IO (Ptr CDouble)
+    poke x'' x'
+    let y' = realToFrac y
+    y'' <- allocMem :: IO (Ptr CDouble)
+    poke y'' y'
+    pango_matrix_transform_point _obj' x'' y''
+    x''' <- peek x''
+    let x'''' = realToFrac x'''
+    y''' <- peek y''
+    let y'''' = realToFrac y'''
+    touchManagedPtr _obj
+    freeMem x''
+    freeMem y''
+    return (x'''', y'''')
+
+-- XXX Could not generate method Matrix::transform_rectangle
+-- Error was : Not implemented: "Nullable inout structs not supported"
+-- method Matrix::translate
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tx", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ty", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tx", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ty", 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_matrix_translate" pango_matrix_translate :: 
+    Ptr Matrix ->                           -- _obj : TInterface "Pango" "Matrix"
+    CDouble ->                              -- tx : TBasicType TDouble
+    CDouble ->                              -- ty : TBasicType TDouble
+    IO ()
+
+
+matrixTranslate ::
+    (MonadIO m) =>
+    Matrix ->                               -- _obj
+    Double ->                               -- tx
+    Double ->                               -- ty
+    m ()
+matrixTranslate _obj tx ty = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let tx' = realToFrac tx
+    let ty' = realToFrac ty
+    pango_matrix_translate _obj' tx' ty'
+    touchManagedPtr _obj
+    return ()
+
+-- struct Rectangle
+newtype Rectangle = Rectangle (ForeignPtr Rectangle)
+noRectangle :: Maybe Rectangle
+noRectangle = Nothing
+
+rectangleReadX :: Rectangle -> IO Int32
+rectangleReadX s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+rectangleReadY :: Rectangle -> IO Int32
+rectangleReadY s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 4) :: IO Int32
+    return val
+
+rectangleReadWidth :: Rectangle -> IO Int32
+rectangleReadWidth s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 8) :: IO Int32
+    return val
+
+rectangleReadHeight :: Rectangle -> IO Int32
+rectangleReadHeight s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 12) :: IO Int32
+    return val
+
+-- Enum RenderPart
+
+data RenderPart = 
+      RenderPartForeground
+    | RenderPartBackground
+    | RenderPartUnderline
+    | RenderPartStrikethrough
+    | AnotherRenderPart Int
+    deriving (Show, Eq)
+
+instance Enum RenderPart where
+    fromEnum RenderPartForeground = 0
+    fromEnum RenderPartBackground = 1
+    fromEnum RenderPartUnderline = 2
+    fromEnum RenderPartStrikethrough = 3
+    fromEnum (AnotherRenderPart k) = k
+
+    toEnum 0 = RenderPartForeground
+    toEnum 1 = RenderPartBackground
+    toEnum 2 = RenderPartUnderline
+    toEnum 3 = RenderPartStrikethrough
+    toEnum k = AnotherRenderPart k
+
+foreign import ccall "pango_render_part_get_type" c_pango_render_part_get_type :: 
+    IO GType
+
+instance BoxedEnum RenderPart where
+    boxedEnumType _ = c_pango_render_part_get_type
+
+-- object Renderer 
+newtype Renderer = Renderer (ForeignPtr Renderer)
+noRenderer :: Maybe Renderer
+noRenderer = Nothing
+
+foreign import ccall "pango_renderer_get_type"
+    c_pango_renderer_get_type :: IO GType
+
+type instance ParentTypes Renderer = '[GObject.Object]
+
+instance GObject Renderer where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_pango_renderer_get_type
+    
+
+class GObject o => RendererK o
+instance (GObject o, IsDescendantOf Renderer o) => RendererK o
+
+toRenderer :: RendererK o => o -> IO Renderer
+toRenderer = unsafeCastTo Renderer
+
+-- method Renderer::activate
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_activate" pango_renderer_activate :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    IO ()
+
+
+rendererActivate ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    m ()
+rendererActivate _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_renderer_activate _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::deactivate
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_deactivate" pango_renderer_deactivate :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    IO ()
+
+
+rendererDeactivate ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    m ()
+rendererDeactivate _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_renderer_deactivate _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::draw_error_underline
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", 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_renderer_draw_error_underline" pango_renderer_draw_error_underline :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt32
+    Int32 ->                                -- height : TBasicType TInt32
+    IO ()
+
+
+rendererDrawErrorUnderline ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    Int32 ->                                -- width
+    Int32 ->                                -- height
+    m ()
+rendererDrawErrorUnderline _obj x y width height = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    pango_renderer_draw_error_underline _obj' x y width height
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::draw_glyph
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", 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_renderer_draw_glyph" pango_renderer_draw_glyph :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Ptr Font ->                             -- font : TInterface "Pango" "Font"
+    Word32 ->                               -- glyph : TBasicType TUInt32
+    CDouble ->                              -- x : TBasicType TDouble
+    CDouble ->                              -- y : TBasicType TDouble
+    IO ()
+
+
+rendererDrawGlyph ::
+    (MonadIO m, RendererK a, FontK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- font
+    Word32 ->                               -- glyph
+    Double ->                               -- x
+    Double ->                               -- y
+    m ()
+rendererDrawGlyph _obj font glyph x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let font' = unsafeManagedPtrCastPtr font
+    let x' = realToFrac x
+    let y' = realToFrac y
+    pango_renderer_draw_glyph _obj' font' glyph x' y'
+    touchManagedPtr _obj
+    touchManagedPtr font
+    return ()
+
+-- method Renderer::draw_glyph_item
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", 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_renderer_draw_glyph_item" pango_renderer_draw_glyph_item :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CString ->                              -- text : TBasicType TUTF8
+    Ptr GlyphItem ->                        -- glyph_item : TInterface "Pango" "GlyphItem"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    IO ()
+
+
+rendererDrawGlyphItem ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    Maybe (T.Text) ->                       -- text
+    GlyphItem ->                            -- glyph_item
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    m ()
+rendererDrawGlyphItem _obj text glyph_item x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeText <- case text of
+        Nothing -> return nullPtr
+        Just jText -> do
+            jText' <- textToCString jText
+            return jText'
+    let glyph_item' = unsafeManagedPtrGetPtr glyph_item
+    pango_renderer_draw_glyph_item _obj' maybeText glyph_item' x y
+    touchManagedPtr _obj
+    touchManagedPtr glyph_item
+    freeMem maybeText
+    return ()
+
+-- method Renderer::draw_glyphs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", 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_renderer_draw_glyphs" pango_renderer_draw_glyphs :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Ptr Font ->                             -- font : TInterface "Pango" "Font"
+    Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    IO ()
+
+
+rendererDrawGlyphs ::
+    (MonadIO m, RendererK a, FontK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- font
+    GlyphString ->                          -- glyphs
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    m ()
+rendererDrawGlyphs _obj font glyphs x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let font' = unsafeManagedPtrCastPtr font
+    let glyphs' = unsafeManagedPtrGetPtr glyphs
+    pango_renderer_draw_glyphs _obj' font' glyphs' x y
+    touchManagedPtr _obj
+    touchManagedPtr font
+    touchManagedPtr glyphs
+    return ()
+
+-- method Renderer::draw_layout
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "layout", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "layout", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", 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_renderer_draw_layout" pango_renderer_draw_layout :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Ptr Layout ->                           -- layout : TInterface "Pango" "Layout"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    IO ()
+
+
+rendererDrawLayout ::
+    (MonadIO m, RendererK a, LayoutK b) =>
+    a ->                                    -- _obj
+    b ->                                    -- layout
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    m ()
+rendererDrawLayout _obj layout x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let layout' = unsafeManagedPtrCastPtr layout
+    pango_renderer_draw_layout _obj' layout' x y
+    touchManagedPtr _obj
+    touchManagedPtr layout
+    return ()
+
+-- method Renderer::draw_layout_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "line", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", 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_renderer_draw_layout_line" pango_renderer_draw_layout_line :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Ptr LayoutLine ->                       -- line : TInterface "Pango" "LayoutLine"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    IO ()
+
+
+rendererDrawLayoutLine ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    LayoutLine ->                           -- line
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    m ()
+rendererDrawLayoutLine _obj line x y = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let line' = unsafeManagedPtrGetPtr line
+    pango_renderer_draw_layout_line _obj' line' x y
+    touchManagedPtr _obj
+    touchManagedPtr line
+    return ()
+
+-- method Renderer::draw_rectangle
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", 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_renderer_draw_rectangle" pango_renderer_draw_rectangle :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CUInt ->                                -- part : TInterface "Pango" "RenderPart"
+    Int32 ->                                -- x : TBasicType TInt32
+    Int32 ->                                -- y : TBasicType TInt32
+    Int32 ->                                -- width : TBasicType TInt32
+    Int32 ->                                -- height : TBasicType TInt32
+    IO ()
+
+
+rendererDrawRectangle ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    RenderPart ->                           -- part
+    Int32 ->                                -- x
+    Int32 ->                                -- y
+    Int32 ->                                -- width
+    Int32 ->                                -- height
+    m ()
+rendererDrawRectangle _obj part x y width height = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let part' = (fromIntegral . fromEnum) part
+    pango_renderer_draw_rectangle _obj' part' x y width height
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::draw_trapezoid
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y1_", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x11", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x21", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y2", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x12", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x22", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y1_", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x11", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x21", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y2", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x12", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x22", 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_renderer_draw_trapezoid" pango_renderer_draw_trapezoid :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CUInt ->                                -- part : TInterface "Pango" "RenderPart"
+    CDouble ->                              -- y1_ : TBasicType TDouble
+    CDouble ->                              -- x11 : TBasicType TDouble
+    CDouble ->                              -- x21 : TBasicType TDouble
+    CDouble ->                              -- y2 : TBasicType TDouble
+    CDouble ->                              -- x12 : TBasicType TDouble
+    CDouble ->                              -- x22 : TBasicType TDouble
+    IO ()
+
+
+rendererDrawTrapezoid ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    RenderPart ->                           -- part
+    Double ->                               -- y1_
+    Double ->                               -- x11
+    Double ->                               -- x21
+    Double ->                               -- y2
+    Double ->                               -- x12
+    Double ->                               -- x22
+    m ()
+rendererDrawTrapezoid _obj part y1_ x11 x21 y2 x12 x22 = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let part' = (fromIntegral . fromEnum) part
+    let y1_' = realToFrac y1_
+    let x11' = realToFrac x11
+    let x21' = realToFrac x21
+    let y2' = realToFrac y2
+    let x12' = realToFrac x12
+    let x22' = realToFrac x22
+    pango_renderer_draw_trapezoid _obj' part' y1_' x11' x21' y2' x12' x22'
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::get_color
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Color"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_get_color" pango_renderer_get_color :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CUInt ->                                -- part : TInterface "Pango" "RenderPart"
+    IO (Ptr Color)
+
+
+rendererGetColor ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    RenderPart ->                           -- part
+    m Color
+rendererGetColor _obj part = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let part' = (fromIntegral . fromEnum) part
+    result <- pango_renderer_get_color _obj' part'
+    result' <- (newBoxed Color) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Renderer::get_layout
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Layout"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_get_layout" pango_renderer_get_layout :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    IO (Ptr Layout)
+
+
+rendererGetLayout ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    m Layout
+rendererGetLayout _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_renderer_get_layout _obj'
+    result' <- (newObject Layout) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Renderer::get_layout_line
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "LayoutLine"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_get_layout_line" pango_renderer_get_layout_line :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    IO (Ptr LayoutLine)
+
+
+rendererGetLayoutLine ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    m LayoutLine
+rendererGetLayoutLine _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_renderer_get_layout_line _obj'
+    result' <- (newBoxed LayoutLine) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Renderer::get_matrix
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Matrix"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_get_matrix" pango_renderer_get_matrix :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    IO (Ptr Matrix)
+
+
+rendererGetMatrix ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    m Matrix
+rendererGetMatrix _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- pango_renderer_get_matrix _obj'
+    result' <- (newBoxed Matrix) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Renderer::part_changed
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_part_changed" pango_renderer_part_changed :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CUInt ->                                -- part : TInterface "Pango" "RenderPart"
+    IO ()
+
+
+rendererPartChanged ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    RenderPart ->                           -- part
+    m ()
+rendererPartChanged _obj part = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let part' = (fromIntegral . fromEnum) part
+    pango_renderer_part_changed _obj' part'
+    touchManagedPtr _obj
+    return ()
+
+-- method Renderer::set_color
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "part", argType = TInterface "Pango" "RenderPart", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Pango" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_set_color" pango_renderer_set_color :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    CUInt ->                                -- part : TInterface "Pango" "RenderPart"
+    Ptr Color ->                            -- color : TInterface "Pango" "Color"
+    IO ()
+
+
+rendererSetColor ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    RenderPart ->                           -- part
+    Maybe (Color) ->                        -- color
+    m ()
+rendererSetColor _obj part color = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let part' = (fromIntegral . fromEnum) part
+    maybeColor <- case color of
+        Nothing -> return nullPtr
+        Just jColor -> do
+            let jColor' = unsafeManagedPtrGetPtr jColor
+            return jColor'
+    pango_renderer_set_color _obj' part' maybeColor
+    touchManagedPtr _obj
+    whenJust color touchManagedPtr
+    return ()
+
+-- method Renderer::set_matrix
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "Renderer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_renderer_set_matrix" pango_renderer_set_matrix :: 
+    Ptr Renderer ->                         -- _obj : TInterface "Pango" "Renderer"
+    Ptr Matrix ->                           -- matrix : TInterface "Pango" "Matrix"
+    IO ()
+
+
+rendererSetMatrix ::
+    (MonadIO m, RendererK a) =>
+    a ->                                    -- _obj
+    Maybe (Matrix) ->                       -- matrix
+    m ()
+rendererSetMatrix _obj matrix = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    maybeMatrix <- case matrix of
+        Nothing -> return nullPtr
+        Just jMatrix -> do
+            let jMatrix' = unsafeManagedPtrGetPtr jMatrix
+            return jMatrix'
+    pango_renderer_set_matrix _obj' maybeMatrix
+    touchManagedPtr _obj
+    whenJust matrix touchManagedPtr
+    return ()
+
+-- Enum Script
+
+data Script = 
+      ScriptInvalidCode
+    | ScriptCommon
+    | ScriptInherited
+    | ScriptArabic
+    | ScriptArmenian
+    | ScriptBengali
+    | ScriptBopomofo
+    | ScriptCherokee
+    | ScriptCoptic
+    | ScriptCyrillic
+    | ScriptDeseret
+    | ScriptDevanagari
+    | ScriptEthiopic
+    | ScriptGeorgian
+    | ScriptGothic
+    | ScriptGreek
+    | ScriptGujarati
+    | ScriptGurmukhi
+    | ScriptHan
+    | ScriptHangul
+    | ScriptHebrew
+    | ScriptHiragana
+    | ScriptKannada
+    | ScriptKatakana
+    | ScriptKhmer
+    | ScriptLao
+    | ScriptLatin
+    | ScriptMalayalam
+    | ScriptMongolian
+    | ScriptMyanmar
+    | ScriptOgham
+    | ScriptOldItalic
+    | ScriptOriya
+    | ScriptRunic
+    | ScriptSinhala
+    | ScriptSyriac
+    | ScriptTamil
+    | ScriptTelugu
+    | ScriptThaana
+    | ScriptThai
+    | ScriptTibetan
+    | ScriptCanadianAboriginal
+    | ScriptYi
+    | ScriptTagalog
+    | ScriptHanunoo
+    | ScriptBuhid
+    | ScriptTagbanwa
+    | ScriptBraille
+    | ScriptCypriot
+    | ScriptLimbu
+    | ScriptOsmanya
+    | ScriptShavian
+    | ScriptLinearB
+    | ScriptTaiLe
+    | ScriptUgaritic
+    | ScriptNewTaiLue
+    | ScriptBuginese
+    | ScriptGlagolitic
+    | ScriptTifinagh
+    | ScriptSylotiNagri
+    | ScriptOldPersian
+    | ScriptKharoshthi
+    | ScriptUnknown
+    | ScriptBalinese
+    | ScriptCuneiform
+    | ScriptPhoenician
+    | ScriptPhagsPa
+    | ScriptNko
+    | ScriptKayahLi
+    | ScriptLepcha
+    | ScriptRejang
+    | ScriptSundanese
+    | ScriptSaurashtra
+    | ScriptCham
+    | ScriptOlChiki
+    | ScriptVai
+    | ScriptCarian
+    | ScriptLycian
+    | ScriptLydian
+    | ScriptBatak
+    | ScriptBrahmi
+    | ScriptMandaic
+    | ScriptChakma
+    | ScriptMeroiticCursive
+    | ScriptMeroiticHieroglyphs
+    | ScriptMiao
+    | ScriptSharada
+    | ScriptSoraSompeng
+    | ScriptTakri
+    | AnotherScript Int
+    deriving (Show, Eq)
+
+instance Enum Script where
+    fromEnum ScriptInvalidCode = -1
+    fromEnum ScriptCommon = 0
+    fromEnum ScriptInherited = 1
+    fromEnum ScriptArabic = 2
+    fromEnum ScriptArmenian = 3
+    fromEnum ScriptBengali = 4
+    fromEnum ScriptBopomofo = 5
+    fromEnum ScriptCherokee = 6
+    fromEnum ScriptCoptic = 7
+    fromEnum ScriptCyrillic = 8
+    fromEnum ScriptDeseret = 9
+    fromEnum ScriptDevanagari = 10
+    fromEnum ScriptEthiopic = 11
+    fromEnum ScriptGeorgian = 12
+    fromEnum ScriptGothic = 13
+    fromEnum ScriptGreek = 14
+    fromEnum ScriptGujarati = 15
+    fromEnum ScriptGurmukhi = 16
+    fromEnum ScriptHan = 17
+    fromEnum ScriptHangul = 18
+    fromEnum ScriptHebrew = 19
+    fromEnum ScriptHiragana = 20
+    fromEnum ScriptKannada = 21
+    fromEnum ScriptKatakana = 22
+    fromEnum ScriptKhmer = 23
+    fromEnum ScriptLao = 24
+    fromEnum ScriptLatin = 25
+    fromEnum ScriptMalayalam = 26
+    fromEnum ScriptMongolian = 27
+    fromEnum ScriptMyanmar = 28
+    fromEnum ScriptOgham = 29
+    fromEnum ScriptOldItalic = 30
+    fromEnum ScriptOriya = 31
+    fromEnum ScriptRunic = 32
+    fromEnum ScriptSinhala = 33
+    fromEnum ScriptSyriac = 34
+    fromEnum ScriptTamil = 35
+    fromEnum ScriptTelugu = 36
+    fromEnum ScriptThaana = 37
+    fromEnum ScriptThai = 38
+    fromEnum ScriptTibetan = 39
+    fromEnum ScriptCanadianAboriginal = 40
+    fromEnum ScriptYi = 41
+    fromEnum ScriptTagalog = 42
+    fromEnum ScriptHanunoo = 43
+    fromEnum ScriptBuhid = 44
+    fromEnum ScriptTagbanwa = 45
+    fromEnum ScriptBraille = 46
+    fromEnum ScriptCypriot = 47
+    fromEnum ScriptLimbu = 48
+    fromEnum ScriptOsmanya = 49
+    fromEnum ScriptShavian = 50
+    fromEnum ScriptLinearB = 51
+    fromEnum ScriptTaiLe = 52
+    fromEnum ScriptUgaritic = 53
+    fromEnum ScriptNewTaiLue = 54
+    fromEnum ScriptBuginese = 55
+    fromEnum ScriptGlagolitic = 56
+    fromEnum ScriptTifinagh = 57
+    fromEnum ScriptSylotiNagri = 58
+    fromEnum ScriptOldPersian = 59
+    fromEnum ScriptKharoshthi = 60
+    fromEnum ScriptUnknown = 61
+    fromEnum ScriptBalinese = 62
+    fromEnum ScriptCuneiform = 63
+    fromEnum ScriptPhoenician = 64
+    fromEnum ScriptPhagsPa = 65
+    fromEnum ScriptNko = 66
+    fromEnum ScriptKayahLi = 67
+    fromEnum ScriptLepcha = 68
+    fromEnum ScriptRejang = 69
+    fromEnum ScriptSundanese = 70
+    fromEnum ScriptSaurashtra = 71
+    fromEnum ScriptCham = 72
+    fromEnum ScriptOlChiki = 73
+    fromEnum ScriptVai = 74
+    fromEnum ScriptCarian = 75
+    fromEnum ScriptLycian = 76
+    fromEnum ScriptLydian = 77
+    fromEnum ScriptBatak = 78
+    fromEnum ScriptBrahmi = 79
+    fromEnum ScriptMandaic = 80
+    fromEnum ScriptChakma = 81
+    fromEnum ScriptMeroiticCursive = 82
+    fromEnum ScriptMeroiticHieroglyphs = 83
+    fromEnum ScriptMiao = 84
+    fromEnum ScriptSharada = 85
+    fromEnum ScriptSoraSompeng = 86
+    fromEnum ScriptTakri = 87
+    fromEnum (AnotherScript k) = k
+
+    toEnum -1 = ScriptInvalidCode
+    toEnum 0 = ScriptCommon
+    toEnum 1 = ScriptInherited
+    toEnum 2 = ScriptArabic
+    toEnum 3 = ScriptArmenian
+    toEnum 4 = ScriptBengali
+    toEnum 5 = ScriptBopomofo
+    toEnum 6 = ScriptCherokee
+    toEnum 7 = ScriptCoptic
+    toEnum 8 = ScriptCyrillic
+    toEnum 9 = ScriptDeseret
+    toEnum 10 = ScriptDevanagari
+    toEnum 11 = ScriptEthiopic
+    toEnum 12 = ScriptGeorgian
+    toEnum 13 = ScriptGothic
+    toEnum 14 = ScriptGreek
+    toEnum 15 = ScriptGujarati
+    toEnum 16 = ScriptGurmukhi
+    toEnum 17 = ScriptHan
+    toEnum 18 = ScriptHangul
+    toEnum 19 = ScriptHebrew
+    toEnum 20 = ScriptHiragana
+    toEnum 21 = ScriptKannada
+    toEnum 22 = ScriptKatakana
+    toEnum 23 = ScriptKhmer
+    toEnum 24 = ScriptLao
+    toEnum 25 = ScriptLatin
+    toEnum 26 = ScriptMalayalam
+    toEnum 27 = ScriptMongolian
+    toEnum 28 = ScriptMyanmar
+    toEnum 29 = ScriptOgham
+    toEnum 30 = ScriptOldItalic
+    toEnum 31 = ScriptOriya
+    toEnum 32 = ScriptRunic
+    toEnum 33 = ScriptSinhala
+    toEnum 34 = ScriptSyriac
+    toEnum 35 = ScriptTamil
+    toEnum 36 = ScriptTelugu
+    toEnum 37 = ScriptThaana
+    toEnum 38 = ScriptThai
+    toEnum 39 = ScriptTibetan
+    toEnum 40 = ScriptCanadianAboriginal
+    toEnum 41 = ScriptYi
+    toEnum 42 = ScriptTagalog
+    toEnum 43 = ScriptHanunoo
+    toEnum 44 = ScriptBuhid
+    toEnum 45 = ScriptTagbanwa
+    toEnum 46 = ScriptBraille
+    toEnum 47 = ScriptCypriot
+    toEnum 48 = ScriptLimbu
+    toEnum 49 = ScriptOsmanya
+    toEnum 50 = ScriptShavian
+    toEnum 51 = ScriptLinearB
+    toEnum 52 = ScriptTaiLe
+    toEnum 53 = ScriptUgaritic
+    toEnum 54 = ScriptNewTaiLue
+    toEnum 55 = ScriptBuginese
+    toEnum 56 = ScriptGlagolitic
+    toEnum 57 = ScriptTifinagh
+    toEnum 58 = ScriptSylotiNagri
+    toEnum 59 = ScriptOldPersian
+    toEnum 60 = ScriptKharoshthi
+    toEnum 61 = ScriptUnknown
+    toEnum 62 = ScriptBalinese
+    toEnum 63 = ScriptCuneiform
+    toEnum 64 = ScriptPhoenician
+    toEnum 65 = ScriptPhagsPa
+    toEnum 66 = ScriptNko
+    toEnum 67 = ScriptKayahLi
+    toEnum 68 = ScriptLepcha
+    toEnum 69 = ScriptRejang
+    toEnum 70 = ScriptSundanese
+    toEnum 71 = ScriptSaurashtra
+    toEnum 72 = ScriptCham
+    toEnum 73 = ScriptOlChiki
+    toEnum 74 = ScriptVai
+    toEnum 75 = ScriptCarian
+    toEnum 76 = ScriptLycian
+    toEnum 77 = ScriptLydian
+    toEnum 78 = ScriptBatak
+    toEnum 79 = ScriptBrahmi
+    toEnum 80 = ScriptMandaic
+    toEnum 81 = ScriptChakma
+    toEnum 82 = ScriptMeroiticCursive
+    toEnum 83 = ScriptMeroiticHieroglyphs
+    toEnum 84 = ScriptMiao
+    toEnum 85 = ScriptSharada
+    toEnum 86 = ScriptSoraSompeng
+    toEnum 87 = ScriptTakri
+    toEnum k = AnotherScript k
+
+foreign import ccall "pango_script_get_type" c_pango_script_get_type :: 
+    IO GType
+
+instance BoxedEnum Script where
+    boxedEnumType _ = c_pango_script_get_type
+
+-- struct ScriptForLang
+newtype ScriptForLang = ScriptForLang (ForeignPtr ScriptForLang)
+noScriptForLang :: Maybe ScriptForLang
+noScriptForLang = Nothing
+
+-- XXX Skipped getter for "ScriptForLang:lang" :: Not implemented: "Don't know how to unpack C array of type TCArray False 7 (-1) (TBasicType TInt8)"
+
+-- XXX Skipped getter for "ScriptForLang:scripts" :: Not implemented: "Don't know how to unpack C array of type TCArray False 3 (-1) (TInterface \"Pango\" \"Script\")"
+
+-- struct ScriptIter
+newtype ScriptIter = ScriptIter (ForeignPtr ScriptIter)
+noScriptIter :: Maybe ScriptIter
+noScriptIter = Nothing
+
+-- method ScriptIter::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_script_iter_free" pango_script_iter_free :: 
+    Ptr ScriptIter ->                       -- _obj : TInterface "Pango" "ScriptIter"
+    IO ()
+
+
+scriptIterFree ::
+    (MonadIO m) =>
+    ScriptIter ->                           -- _obj
+    m ()
+scriptIterFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_script_iter_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method ScriptIter::get_range
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "end", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_script_iter_get_range" pango_script_iter_get_range :: 
+    Ptr ScriptIter ->                       -- _obj : TInterface "Pango" "ScriptIter"
+    Ptr CString ->                          -- start : TBasicType TUTF8
+    Ptr CString ->                          -- end : TBasicType TUTF8
+    Ptr CUInt ->                            -- script : TInterface "Pango" "Script"
+    IO ()
+
+
+scriptIterGetRange ::
+    (MonadIO m) =>
+    ScriptIter ->                           -- _obj
+    m (T.Text,T.Text,Script)
+scriptIterGetRange _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    start <- allocMem :: IO (Ptr CString)
+    end <- allocMem :: IO (Ptr CString)
+    script <- allocMem :: IO (Ptr CUInt)
+    pango_script_iter_get_range _obj' start end script
+    start' <- peek start
+    start'' <- cstringToText start'
+    freeMem start'
+    end' <- peek end
+    end'' <- cstringToText end'
+    freeMem end'
+    script' <- peek script
+    let script'' = (toEnum . fromIntegral) script'
+    touchManagedPtr _obj
+    freeMem start
+    freeMem end
+    freeMem script
+    return (start'', end'', script'')
+
+-- method ScriptIter::next
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "ScriptIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_script_iter_next" pango_script_iter_next :: 
+    Ptr ScriptIter ->                       -- _obj : TInterface "Pango" "ScriptIter"
+    IO CInt
+
+
+scriptIterNext ::
+    (MonadIO m) =>
+    ScriptIter ->                           -- _obj
+    m Bool
+scriptIterNext _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_script_iter_next _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- Enum Stretch
+
+data Stretch = 
+      StretchUltraCondensed
+    | StretchExtraCondensed
+    | StretchCondensed
+    | StretchSemiCondensed
+    | StretchNormal
+    | StretchSemiExpanded
+    | StretchExpanded
+    | StretchExtraExpanded
+    | StretchUltraExpanded
+    | AnotherStretch Int
+    deriving (Show, Eq)
+
+instance Enum Stretch where
+    fromEnum StretchUltraCondensed = 0
+    fromEnum StretchExtraCondensed = 1
+    fromEnum StretchCondensed = 2
+    fromEnum StretchSemiCondensed = 3
+    fromEnum StretchNormal = 4
+    fromEnum StretchSemiExpanded = 5
+    fromEnum StretchExpanded = 6
+    fromEnum StretchExtraExpanded = 7
+    fromEnum StretchUltraExpanded = 8
+    fromEnum (AnotherStretch k) = k
+
+    toEnum 0 = StretchUltraCondensed
+    toEnum 1 = StretchExtraCondensed
+    toEnum 2 = StretchCondensed
+    toEnum 3 = StretchSemiCondensed
+    toEnum 4 = StretchNormal
+    toEnum 5 = StretchSemiExpanded
+    toEnum 6 = StretchExpanded
+    toEnum 7 = StretchExtraExpanded
+    toEnum 8 = StretchUltraExpanded
+    toEnum k = AnotherStretch k
+
+foreign import ccall "pango_stretch_get_type" c_pango_stretch_get_type :: 
+    IO GType
+
+instance BoxedEnum Stretch where
+    boxedEnumType _ = c_pango_stretch_get_type
+
+-- Enum Style
+
+data Style = 
+      StyleNormal
+    | StyleOblique
+    | StyleItalic
+    | AnotherStyle Int
+    deriving (Show, Eq)
+
+instance Enum Style where
+    fromEnum StyleNormal = 0
+    fromEnum StyleOblique = 1
+    fromEnum StyleItalic = 2
+    fromEnum (AnotherStyle k) = k
+
+    toEnum 0 = StyleNormal
+    toEnum 1 = StyleOblique
+    toEnum 2 = StyleItalic
+    toEnum k = AnotherStyle k
+
+foreign import ccall "pango_style_get_type" c_pango_style_get_type :: 
+    IO GType
+
+instance BoxedEnum Style where
+    boxedEnumType _ = c_pango_style_get_type
+
+-- Enum TabAlign
+
+data TabAlign = 
+      TabAlignLeft
+    | AnotherTabAlign Int
+    deriving (Show, Eq)
+
+instance Enum TabAlign where
+    fromEnum TabAlignLeft = 0
+    fromEnum (AnotherTabAlign k) = k
+
+    toEnum 0 = TabAlignLeft
+    toEnum k = AnotherTabAlign k
+
+foreign import ccall "pango_tab_align_get_type" c_pango_tab_align_get_type :: 
+    IO GType
+
+instance BoxedEnum TabAlign where
+    boxedEnumType _ = c_pango_tab_align_get_type
+
+-- struct TabArray
+newtype TabArray = TabArray (ForeignPtr TabArray)
+noTabArray :: Maybe TabArray
+noTabArray = Nothing
+
+foreign import ccall "pango_tab_array_get_type" c_pango_tab_array_get_type :: 
+    IO GType
+
+instance BoxedObject TabArray where
+    boxedType _ = c_pango_tab_array_get_type
+
+-- method TabArray::new
+-- method type : Constructor
+-- Args : [Arg {argName = "initial_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "positions_in_pixels", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "initial_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "positions_in_pixels", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "TabArray"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_new" pango_tab_array_new :: 
+    Int32 ->                                -- initial_size : TBasicType TInt32
+    CInt ->                                 -- positions_in_pixels : TBasicType TBoolean
+    IO (Ptr TabArray)
+
+
+tabArrayNew ::
+    (MonadIO m) =>
+    Int32 ->                                -- initial_size
+    Bool ->                                 -- positions_in_pixels
+    m TabArray
+tabArrayNew initial_size positions_in_pixels = liftIO $ do
+    let positions_in_pixels' = (fromIntegral . fromEnum) positions_in_pixels
+    result <- pango_tab_array_new initial_size positions_in_pixels'
+    result' <- (wrapBoxed TabArray) result
+    return result'
+
+-- method TabArray::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "TabArray"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_copy" pango_tab_array_copy :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    IO (Ptr TabArray)
+
+
+tabArrayCopy ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    m TabArray
+tabArrayCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_tab_array_copy _obj'
+    result' <- (wrapBoxed TabArray) result
+    touchManagedPtr _obj
+    return result'
+
+-- method TabArray::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_free" pango_tab_array_free :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    IO ()
+
+
+tabArrayFree ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    m ()
+tabArrayFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_tab_array_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method TabArray::get_positions_in_pixels
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_get_positions_in_pixels" pango_tab_array_get_positions_in_pixels :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    IO CInt
+
+
+tabArrayGetPositionsInPixels ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    m Bool
+tabArrayGetPositionsInPixels _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_tab_array_get_positions_in_pixels _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method TabArray::get_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_get_size" pango_tab_array_get_size :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    IO Int32
+
+
+tabArrayGetSize ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    m Int32
+tabArrayGetSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_tab_array_get_size _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method TabArray::get_tab
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tab_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "location", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tab_index", 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_tab_array_get_tab" pango_tab_array_get_tab :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    Int32 ->                                -- tab_index : TBasicType TInt32
+    Ptr CUInt ->                            -- alignment : TInterface "Pango" "TabAlign"
+    Ptr Int32 ->                            -- location : TBasicType TInt32
+    IO ()
+
+
+tabArrayGetTab ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    Int32 ->                                -- tab_index
+    m (TabAlign,Int32)
+tabArrayGetTab _obj tab_index = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    alignment <- allocMem :: IO (Ptr CUInt)
+    location <- allocMem :: IO (Ptr Int32)
+    pango_tab_array_get_tab _obj' tab_index alignment location
+    alignment' <- peek alignment
+    let alignment'' = (toEnum . fromIntegral) alignment'
+    location' <- peek location
+    touchManagedPtr _obj
+    freeMem alignment
+    freeMem location
+    return (alignment'', location')
+
+-- method TabArray::get_tabs
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignments", argType = TInterface "Pango" "TabAlign", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "locations", argType = TCArray False (-1) (-1) (TBasicType TInt32), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_tab_array_get_tabs" pango_tab_array_get_tabs :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    Ptr CUInt ->                            -- alignments : TInterface "Pango" "TabAlign"
+    Ptr (Ptr Int32) ->                      -- locations : TCArray False (-1) (-1) (TBasicType TInt32)
+    IO ()
+
+
+tabArrayGetTabs ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    m (TabAlign,(Ptr Int32))
+tabArrayGetTabs _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    alignments <- allocMem :: IO (Ptr CUInt)
+    locations <- allocMem :: IO (Ptr (Ptr Int32))
+    pango_tab_array_get_tabs _obj' alignments locations
+    alignments' <- peek alignments
+    let alignments'' = (toEnum . fromIntegral) alignments'
+    locations' <- peek locations
+    touchManagedPtr _obj
+    freeMem alignments
+    freeMem locations
+    return (alignments'', locations')
+
+-- method TabArray::resize
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_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_tab_array_resize" pango_tab_array_resize :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    Int32 ->                                -- new_size : TBasicType TInt32
+    IO ()
+
+
+tabArrayResize ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    Int32 ->                                -- new_size
+    m ()
+tabArrayResize _obj new_size = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_tab_array_resize _obj' new_size
+    touchManagedPtr _obj
+    return ()
+
+-- method TabArray::set_tab
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tab_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "location", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "TabArray", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tab_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alignment", argType = TInterface "Pango" "TabAlign", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "location", 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_tab_array_set_tab" pango_tab_array_set_tab :: 
+    Ptr TabArray ->                         -- _obj : TInterface "Pango" "TabArray"
+    Int32 ->                                -- tab_index : TBasicType TInt32
+    CUInt ->                                -- alignment : TInterface "Pango" "TabAlign"
+    Int32 ->                                -- location : TBasicType TInt32
+    IO ()
+
+
+tabArraySetTab ::
+    (MonadIO m) =>
+    TabArray ->                             -- _obj
+    Int32 ->                                -- tab_index
+    TabAlign ->                             -- alignment
+    Int32 ->                                -- location
+    m ()
+tabArraySetTab _obj tab_index alignment location = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let alignment' = (fromIntegral . fromEnum) alignment
+    pango_tab_array_set_tab _obj' tab_index alignment' location
+    touchManagedPtr _obj
+    return ()
+
+-- Enum Underline
+
+data Underline = 
+      UnderlineNone
+    | UnderlineSingle
+    | UnderlineDouble
+    | UnderlineLow
+    | UnderlineError
+    | AnotherUnderline Int
+    deriving (Show, Eq)
+
+instance Enum Underline where
+    fromEnum UnderlineNone = 0
+    fromEnum UnderlineSingle = 1
+    fromEnum UnderlineDouble = 2
+    fromEnum UnderlineLow = 3
+    fromEnum UnderlineError = 4
+    fromEnum (AnotherUnderline k) = k
+
+    toEnum 0 = UnderlineNone
+    toEnum 1 = UnderlineSingle
+    toEnum 2 = UnderlineDouble
+    toEnum 3 = UnderlineLow
+    toEnum 4 = UnderlineError
+    toEnum k = AnotherUnderline k
+
+foreign import ccall "pango_underline_get_type" c_pango_underline_get_type :: 
+    IO GType
+
+instance BoxedEnum Underline where
+    boxedEnumType _ = c_pango_underline_get_type
+
+-- Enum Variant
+
+data Variant = 
+      VariantNormal
+    | VariantSmallCaps
+    | AnotherVariant Int
+    deriving (Show, Eq)
+
+instance Enum Variant where
+    fromEnum VariantNormal = 0
+    fromEnum VariantSmallCaps = 1
+    fromEnum (AnotherVariant k) = k
+
+    toEnum 0 = VariantNormal
+    toEnum 1 = VariantSmallCaps
+    toEnum k = AnotherVariant k
+
+foreign import ccall "pango_variant_get_type" c_pango_variant_get_type :: 
+    IO GType
+
+instance BoxedEnum Variant where
+    boxedEnumType _ = c_pango_variant_get_type
+
+-- Enum Weight
+
+data Weight = 
+      WeightThin
+    | WeightUltralight
+    | WeightLight
+    | WeightSemilight
+    | WeightBook
+    | WeightNormal
+    | WeightMedium
+    | WeightSemibold
+    | WeightBold
+    | WeightUltrabold
+    | WeightHeavy
+    | WeightUltraheavy
+    | AnotherWeight Int
+    deriving (Show, Eq)
+
+instance Enum Weight where
+    fromEnum WeightThin = 100
+    fromEnum WeightUltralight = 200
+    fromEnum WeightLight = 300
+    fromEnum WeightSemilight = 350
+    fromEnum WeightBook = 380
+    fromEnum WeightNormal = 400
+    fromEnum WeightMedium = 500
+    fromEnum WeightSemibold = 600
+    fromEnum WeightBold = 700
+    fromEnum WeightUltrabold = 800
+    fromEnum WeightHeavy = 900
+    fromEnum WeightUltraheavy = 1000
+    fromEnum (AnotherWeight k) = k
+
+    toEnum 100 = WeightThin
+    toEnum 200 = WeightUltralight
+    toEnum 300 = WeightLight
+    toEnum 350 = WeightSemilight
+    toEnum 380 = WeightBook
+    toEnum 400 = WeightNormal
+    toEnum 500 = WeightMedium
+    toEnum 600 = WeightSemibold
+    toEnum 700 = WeightBold
+    toEnum 800 = WeightUltrabold
+    toEnum 900 = WeightHeavy
+    toEnum 1000 = WeightUltraheavy
+    toEnum k = AnotherWeight k
+
+foreign import ccall "pango_weight_get_type" c_pango_weight_get_type :: 
+    IO GType
+
+instance BoxedEnum Weight where
+    boxedEnumType _ = c_pango_weight_get_type
+
+-- Enum WrapMode
+
+data WrapMode = 
+      WrapModeWord
+    | WrapModeChar
+    | WrapModeWordChar
+    | AnotherWrapMode Int
+    deriving (Show, Eq)
+
+instance Enum WrapMode where
+    fromEnum WrapModeWord = 0
+    fromEnum WrapModeChar = 1
+    fromEnum WrapModeWordChar = 2
+    fromEnum (AnotherWrapMode k) = k
+
+    toEnum 0 = WrapModeWord
+    toEnum 1 = WrapModeChar
+    toEnum 2 = WrapModeWordChar
+    toEnum k = AnotherWrapMode k
+
+foreign import ccall "pango_wrap_mode_get_type" c_pango_wrap_mode_get_type :: 
+    IO GType
+
+instance BoxedEnum WrapMode where
+    boxedEnumType _ = c_pango_wrap_mode_get_type
+
+-- constant _ANALYSIS_FLAG_CENTERED_BASELINE
+
+_ANALYSIS_FLAG_CENTERED_BASELINE :: Int32
+_ANALYSIS_FLAG_CENTERED_BASELINE = 1
+-- constant _ANALYSIS_FLAG_IS_ELLIPSIS
+
+_ANALYSIS_FLAG_IS_ELLIPSIS :: Int32
+_ANALYSIS_FLAG_IS_ELLIPSIS = 2
+-- constant _ATTR_INDEX_FROM_TEXT_BEGINNING
+
+_ATTR_INDEX_FROM_TEXT_BEGINNING :: Int32
+_ATTR_INDEX_FROM_TEXT_BEGINNING = 0
+-- constant _ENGINE_TYPE_LANG
+
+_ENGINE_TYPE_LANG :: T.Text
+_ENGINE_TYPE_LANG = "PangoEngineLang"
+-- constant _ENGINE_TYPE_SHAPE
+
+_ENGINE_TYPE_SHAPE :: T.Text
+_ENGINE_TYPE_SHAPE = "PangoEngineShape"
+-- constant _GLYPH_EMPTY
+
+_GLYPH_EMPTY :: Word32
+_GLYPH_EMPTY = 268435455
+-- constant _GLYPH_INVALID_INPUT
+
+_GLYPH_INVALID_INPUT :: Word32
+_GLYPH_INVALID_INPUT = 4294967295
+-- constant _GLYPH_UNKNOWN_FLAG
+
+_GLYPH_UNKNOWN_FLAG :: Word32
+_GLYPH_UNKNOWN_FLAG = 268435456
+-- constant _RENDER_TYPE_NONE
+
+_RENDER_TYPE_NONE :: T.Text
+_RENDER_TYPE_NONE = "PangoRenderNone"
+-- constant _SCALE
+
+_SCALE :: Int32
+_SCALE = 1024
+-- constant _UNKNOWN_GLYPH_HEIGHT
+
+_UNKNOWN_GLYPH_HEIGHT :: Int32
+_UNKNOWN_GLYPH_HEIGHT = 14
+-- constant _UNKNOWN_GLYPH_WIDTH
+
+_UNKNOWN_GLYPH_WIDTH :: Int32
+_UNKNOWN_GLYPH_WIDTH = 10
+-- function pango_attr_type_get_name
+-- Args : [Arg {argName = "type", argType = TInterface "Pango" "AttrType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "type", argType = TInterface "Pango" "AttrType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_type_get_name" pango_attr_type_get_name :: 
+    CUInt ->                                -- type : TInterface "Pango" "AttrType"
+    IO CString
+
+
+attrTypeGetName ::
+    (MonadIO m) =>
+    AttrType ->                             -- type
+    m T.Text
+attrTypeGetName type_ = liftIO $ do
+    let type_' = (fromIntegral . fromEnum) type_
+    result <- pango_attr_type_get_name type_'
+    result' <- cstringToText result
+    return result'
+
+-- function pango_attr_type_register
+-- Args : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "AttrType"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_attr_type_register" pango_attr_type_register :: 
+    CString ->                              -- name : TBasicType TUTF8
+    IO CUInt
+
+
+attrTypeRegister ::
+    (MonadIO m) =>
+    T.Text ->                               -- name
+    m AttrType
+attrTypeRegister name = liftIO $ do
+    name' <- textToCString name
+    result <- pango_attr_type_register name'
+    let result' = (toEnum . fromIntegral) result
+    freeMem name'
+    return result'
+
+-- function pango_bidi_type_for_unichar
+-- Args : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "BidiType"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_bidi_type_for_unichar" pango_bidi_type_for_unichar :: 
+    CInt ->                                 -- ch : TBasicType TUniChar
+    IO CUInt
+
+
+bidiTypeForUnichar ::
+    (MonadIO m) =>
+    Char ->                                 -- ch
+    m BidiType
+bidiTypeForUnichar ch = liftIO $ do
+    let ch' = (fromIntegral . ord) ch
+    result <- pango_bidi_type_for_unichar ch'
+    let result' = (toEnum . fromIntegral) result
+    return result'
+
+-- function pango_break
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TCArray False (-1) 4 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : [Arg {argName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TCArray False (-1) 4 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_break" pango_break :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Ptr LogAttr ->                          -- attrs : TCArray False (-1) 4 (TInterface "Pango" "LogAttr")
+    Int32 ->                                -- attrs_len : TBasicType TInt32
+    IO ()
+
+
+break ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Analysis ->                             -- analysis
+    [LogAttr] ->                            -- attrs
+    m ()
+break text length_ analysis attrs = liftIO $ do
+    let attrs_len = fromIntegral $ length attrs
+    text' <- textToCString text
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    let attrs' = map unsafeManagedPtrGetPtr attrs
+    attrs'' <- packBlockArray 52 attrs'
+    pango_break text' length_ analysis' attrs'' attrs_len
+    touchManagedPtr analysis
+    mapM_ touchManagedPtr attrs
+    freeMem text'
+    freeMem attrs''
+    return ()
+
+-- function pango_config_key_get
+-- Args : [Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_config_key_get" pango_config_key_get :: 
+    CString ->                              -- key : TBasicType TUTF8
+    IO CString
+
+
+configKeyGet ::
+    (MonadIO m) =>
+    T.Text ->                               -- key
+    m T.Text
+configKeyGet key = liftIO $ do
+    key' <- textToCString key
+    result <- pango_config_key_get key'
+    result' <- cstringToText result
+    freeMem result
+    freeMem key'
+    return result'
+
+-- function pango_config_key_get_system
+-- Args : [Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_config_key_get_system" pango_config_key_get_system :: 
+    CString ->                              -- key : TBasicType TUTF8
+    IO CString
+
+
+configKeyGetSystem ::
+    (MonadIO m) =>
+    T.Text ->                               -- key
+    m T.Text
+configKeyGetSystem key = liftIO $ do
+    key' <- textToCString key
+    result <- pango_config_key_get_system key'
+    result' <- cstringToText result
+    freeMem result
+    freeMem key'
+    return result'
+
+-- function pango_default_break
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "LogAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "LogAttr", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs_len", 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_default_break" pango_default_break :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Ptr LogAttr ->                          -- attrs : TInterface "Pango" "LogAttr"
+    Int32 ->                                -- attrs_len : TBasicType TInt32
+    IO ()
+
+
+defaultBreak ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Analysis ->                             -- analysis
+    LogAttr ->                              -- attrs
+    Int32 ->                                -- attrs_len
+    m ()
+defaultBreak text length_ analysis attrs attrs_len = liftIO $ do
+    text' <- textToCString text
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    let attrs' = unsafeManagedPtrGetPtr attrs
+    pango_default_break text' length_ analysis' attrs' attrs_len
+    touchManagedPtr analysis
+    touchManagedPtr attrs
+    freeMem text'
+    return ()
+
+-- function pango_extents_to_pixels
+-- Args : [Arg {argName = "inclusive", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "nearest", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "inclusive", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "nearest", argType = TInterface "Pango" "Rectangle", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_extents_to_pixels" pango_extents_to_pixels :: 
+    Ptr Rectangle ->                        -- inclusive : TInterface "Pango" "Rectangle"
+    Ptr Rectangle ->                        -- nearest : TInterface "Pango" "Rectangle"
+    IO ()
+
+
+extentsToPixels ::
+    (MonadIO m) =>
+    Maybe (Rectangle) ->                    -- inclusive
+    Maybe (Rectangle) ->                    -- nearest
+    m ()
+extentsToPixels inclusive nearest = liftIO $ do
+    maybeInclusive <- case inclusive of
+        Nothing -> return nullPtr
+        Just jInclusive -> do
+            let jInclusive' = unsafeManagedPtrGetPtr jInclusive
+            return jInclusive'
+    maybeNearest <- case nearest of
+        Nothing -> return nullPtr
+        Just jNearest -> do
+            let jNearest' = unsafeManagedPtrGetPtr jNearest
+            return jNearest'
+    pango_extents_to_pixels maybeInclusive maybeNearest
+    whenJust inclusive touchManagedPtr
+    whenJust nearest touchManagedPtr
+    return ()
+
+-- function pango_find_base_dir
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Direction"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_find_base_dir" pango_find_base_dir :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    IO CUInt
+
+
+findBaseDir ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    m Direction
+findBaseDir text length_ = liftIO $ do
+    text' <- textToCString text
+    result <- pango_find_base_dir text' length_
+    let result' = (toEnum . fromIntegral) result
+    freeMem text'
+    return result'
+
+-- function pango_find_paragraph_boundary
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "paragraph_delimiter_index", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "next_paragraph_start", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", 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_find_paragraph_boundary" pango_find_paragraph_boundary :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Int32 ->                            -- paragraph_delimiter_index : TBasicType TInt32
+    Ptr Int32 ->                            -- next_paragraph_start : TBasicType TInt32
+    IO ()
+
+
+findParagraphBoundary ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    m (Int32,Int32)
+findParagraphBoundary text length_ = liftIO $ do
+    text' <- textToCString text
+    paragraph_delimiter_index <- allocMem :: IO (Ptr Int32)
+    next_paragraph_start <- allocMem :: IO (Ptr Int32)
+    pango_find_paragraph_boundary text' length_ paragraph_delimiter_index next_paragraph_start
+    paragraph_delimiter_index' <- peek paragraph_delimiter_index
+    next_paragraph_start' <- peek next_paragraph_start
+    freeMem text'
+    freeMem paragraph_delimiter_index
+    freeMem next_paragraph_start
+    return (paragraph_delimiter_index', next_paragraph_start')
+
+-- function pango_font_description_from_string
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, 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_from_string" pango_font_description_from_string :: 
+    CString ->                              -- str : TBasicType TUTF8
+    IO (Ptr FontDescription)
+
+
+fontDescriptionFromString ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    m FontDescription
+fontDescriptionFromString str = liftIO $ do
+    str' <- textToCString str
+    result <- pango_font_description_from_string str'
+    result' <- (wrapBoxed FontDescription) result
+    freeMem str'
+    return result'
+
+-- function pango_get_lib_subdirectory
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_get_lib_subdirectory" pango_get_lib_subdirectory :: 
+    IO CString
+
+
+getLibSubdirectory ::
+    (MonadIO m) =>
+    m T.Text
+getLibSubdirectory  = liftIO $ do
+    result <- pango_get_lib_subdirectory
+    result' <- cstringToText result
+    return result'
+
+-- function pango_get_log_attrs
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "log_attrs", argType = TCArray False (-1) 5 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : [Arg {argName = "attrs_len", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "level", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "language", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "log_attrs", argType = TCArray False (-1) 5 (TInterface "Pango" "LogAttr"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_get_log_attrs" pango_get_log_attrs :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Int32 ->                                -- level : TBasicType TInt32
+    Ptr Language ->                         -- language : TInterface "Pango" "Language"
+    Ptr LogAttr ->                          -- log_attrs : TCArray False (-1) 5 (TInterface "Pango" "LogAttr")
+    Int32 ->                                -- attrs_len : TBasicType TInt32
+    IO ()
+
+
+getLogAttrs ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Int32 ->                                -- level
+    Language ->                             -- language
+    [LogAttr] ->                            -- log_attrs
+    m ()
+getLogAttrs text length_ level language log_attrs = liftIO $ do
+    let attrs_len = fromIntegral $ length log_attrs
+    text' <- textToCString text
+    let language' = unsafeManagedPtrGetPtr language
+    let log_attrs' = map unsafeManagedPtrGetPtr log_attrs
+    log_attrs'' <- packBlockArray 52 log_attrs'
+    pango_get_log_attrs text' length_ level language' log_attrs'' attrs_len
+    touchManagedPtr language
+    mapM_ touchManagedPtr log_attrs
+    freeMem text'
+    freeMem log_attrs''
+    return ()
+
+-- function pango_get_mirror_char
+-- Args : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mirrored_ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mirrored_ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_get_mirror_char" pango_get_mirror_char :: 
+    CInt ->                                 -- ch : TBasicType TUniChar
+    CInt ->                                 -- mirrored_ch : TBasicType TUniChar
+    IO CInt
+
+
+getMirrorChar ::
+    (MonadIO m) =>
+    Char ->                                 -- ch
+    Char ->                                 -- mirrored_ch
+    m Bool
+getMirrorChar ch mirrored_ch = liftIO $ do
+    let ch' = (fromIntegral . ord) ch
+    let mirrored_ch' = (fromIntegral . ord) mirrored_ch
+    result <- pango_get_mirror_char ch' mirrored_ch'
+    let result' = (/= 0) result
+    return result'
+
+-- function pango_get_sysconf_subdirectory
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_get_sysconf_subdirectory" pango_get_sysconf_subdirectory :: 
+    IO CString
+
+
+getSysconfSubdirectory ::
+    (MonadIO m) =>
+    m T.Text
+getSysconfSubdirectory  = liftIO $ do
+    result <- pango_get_sysconf_subdirectory
+    result' <- cstringToText result
+    return result'
+
+-- function pango_gravity_get_for_matrix
+-- Args : [Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "matrix", argType = TInterface "Pango" "Matrix", 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_gravity_get_for_matrix" pango_gravity_get_for_matrix :: 
+    Ptr Matrix ->                           -- matrix : TInterface "Pango" "Matrix"
+    IO CUInt
+
+
+gravityGetForMatrix ::
+    (MonadIO m) =>
+    Matrix ->                               -- matrix
+    m Gravity
+gravityGetForMatrix matrix = liftIO $ do
+    let matrix' = unsafeManagedPtrGetPtr matrix
+    result <- pango_gravity_get_for_matrix matrix'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr matrix
+    return result'
+
+-- function pango_gravity_get_for_script
+-- Args : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", 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_gravity_get_for_script" pango_gravity_get_for_script :: 
+    CUInt ->                                -- script : TInterface "Pango" "Script"
+    CUInt ->                                -- base_gravity : TInterface "Pango" "Gravity"
+    CUInt ->                                -- hint : TInterface "Pango" "GravityHint"
+    IO CUInt
+
+
+gravityGetForScript ::
+    (MonadIO m) =>
+    Script ->                               -- script
+    Gravity ->                              -- base_gravity
+    GravityHint ->                          -- hint
+    m Gravity
+gravityGetForScript script base_gravity hint = liftIO $ do
+    let script' = (fromIntegral . fromEnum) script
+    let base_gravity' = (fromIntegral . fromEnum) base_gravity
+    let hint' = (fromIntegral . fromEnum) hint
+    result <- pango_gravity_get_for_script script' base_gravity' hint'
+    let result' = (toEnum . fromIntegral) result
+    return result'
+
+-- function pango_gravity_get_for_script_and_width
+-- Args : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wide", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "wide", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hint", argType = TInterface "Pango" "GravityHint", 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_gravity_get_for_script_and_width" pango_gravity_get_for_script_and_width :: 
+    CUInt ->                                -- script : TInterface "Pango" "Script"
+    CInt ->                                 -- wide : TBasicType TBoolean
+    CUInt ->                                -- base_gravity : TInterface "Pango" "Gravity"
+    CUInt ->                                -- hint : TInterface "Pango" "GravityHint"
+    IO CUInt
+
+
+gravityGetForScriptAndWidth ::
+    (MonadIO m) =>
+    Script ->                               -- script
+    Bool ->                                 -- wide
+    Gravity ->                              -- base_gravity
+    GravityHint ->                          -- hint
+    m Gravity
+gravityGetForScriptAndWidth script wide base_gravity hint = liftIO $ do
+    let script' = (fromIntegral . fromEnum) script
+    let wide' = (fromIntegral . fromEnum) wide
+    let base_gravity' = (fromIntegral . fromEnum) base_gravity
+    let hint' = (fromIntegral . fromEnum) hint
+    result <- pango_gravity_get_for_script_and_width script' wide' base_gravity' hint'
+    let result' = (toEnum . fromIntegral) result
+    return result'
+
+-- function pango_gravity_to_rotation
+-- Args : [Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TDouble
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_gravity_to_rotation" pango_gravity_to_rotation :: 
+    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
+    IO CDouble
+
+
+gravityToRotation ::
+    (MonadIO m) =>
+    Gravity ->                              -- gravity
+    m Double
+gravityToRotation gravity = liftIO $ do
+    let gravity' = (fromIntegral . fromEnum) gravity
+    result <- pango_gravity_to_rotation gravity'
+    let result' = realToFrac result
+    return result'
+
+-- function pango_is_zero_width
+-- Args : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_is_zero_width" pango_is_zero_width :: 
+    CInt ->                                 -- ch : TBasicType TUniChar
+    IO CInt
+
+
+isZeroWidth ::
+    (MonadIO m) =>
+    Char ->                                 -- ch
+    m Bool
+isZeroWidth ch = liftIO $ do
+    let ch' = (fromIntegral . ord) ch
+    result <- pango_is_zero_width ch'
+    let result' = (/= 0) result
+    return result'
+
+-- function pango_itemize
+-- Args : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGList (TInterface "Pango" "Item")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_itemize" pango_itemize :: 
+    Ptr Context ->                          -- context : TInterface "Pango" "Context"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- start_index : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr AttrList ->                         -- attrs : TInterface "Pango" "AttrList"
+    Ptr AttrIterator ->                     -- cached_iter : TInterface "Pango" "AttrIterator"
+    IO (Ptr (GList (Ptr Item)))
+
+
+itemize ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- context
+    T.Text ->                               -- text
+    Int32 ->                                -- start_index
+    Int32 ->                                -- length
+    AttrList ->                             -- attrs
+    Maybe (AttrIterator) ->                 -- cached_iter
+    m [Item]
+itemize context text start_index length_ attrs cached_iter = liftIO $ do
+    let context' = unsafeManagedPtrCastPtr context
+    text' <- textToCString text
+    let attrs' = unsafeManagedPtrGetPtr attrs
+    maybeCached_iter <- case cached_iter of
+        Nothing -> return nullPtr
+        Just jCached_iter -> do
+            let jCached_iter' = unsafeManagedPtrGetPtr jCached_iter
+            return jCached_iter'
+    result <- pango_itemize context' text' start_index length_ attrs' maybeCached_iter
+    result' <- unpackGList result
+    result'' <- mapM (wrapBoxed Item) result'
+    g_list_free result
+    touchManagedPtr context
+    touchManagedPtr attrs
+    whenJust cached_iter touchManagedPtr
+    freeMem text'
+    return result''
+
+-- function pango_itemize_with_base_dir
+-- Args : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_index", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attrs", argType = TInterface "Pango" "AttrList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cached_iter", argType = TInterface "Pango" "AttrIterator", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGList (TInterface "Pango" "Item")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_itemize_with_base_dir" pango_itemize_with_base_dir :: 
+    Ptr Context ->                          -- context : TInterface "Pango" "Context"
+    CUInt ->                                -- base_dir : TInterface "Pango" "Direction"
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- start_index : TBasicType TInt32
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr AttrList ->                         -- attrs : TInterface "Pango" "AttrList"
+    Ptr AttrIterator ->                     -- cached_iter : TInterface "Pango" "AttrIterator"
+    IO (Ptr (GList (Ptr Item)))
+
+
+itemizeWithBaseDir ::
+    (MonadIO m, ContextK a) =>
+    a ->                                    -- context
+    Direction ->                            -- base_dir
+    T.Text ->                               -- text
+    Int32 ->                                -- start_index
+    Int32 ->                                -- length
+    AttrList ->                             -- attrs
+    Maybe (AttrIterator) ->                 -- cached_iter
+    m [Item]
+itemizeWithBaseDir context base_dir text start_index length_ attrs cached_iter = liftIO $ do
+    let context' = unsafeManagedPtrCastPtr context
+    let base_dir' = (fromIntegral . fromEnum) base_dir
+    text' <- textToCString text
+    let attrs' = unsafeManagedPtrGetPtr attrs
+    maybeCached_iter <- case cached_iter of
+        Nothing -> return nullPtr
+        Just jCached_iter -> do
+            let jCached_iter' = unsafeManagedPtrGetPtr jCached_iter
+            return jCached_iter'
+    result <- pango_itemize_with_base_dir context' base_dir' text' start_index length_ attrs' maybeCached_iter
+    result' <- unpackGList result
+    result'' <- mapM (wrapBoxed Item) result'
+    g_list_free result
+    touchManagedPtr context
+    touchManagedPtr attrs
+    whenJust cached_iter touchManagedPtr
+    freeMem text'
+    return result''
+
+-- function pango_language_from_string
+-- Args : [Arg {argName = "language", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "language", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Language"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_from_string" pango_language_from_string :: 
+    CString ->                              -- language : TBasicType TUTF8
+    IO (Ptr Language)
+
+
+languageFromString ::
+    (MonadIO m) =>
+    Maybe (T.Text) ->                       -- language
+    m Language
+languageFromString language = liftIO $ do
+    maybeLanguage <- case language of
+        Nothing -> return nullPtr
+        Just jLanguage -> do
+            jLanguage' <- textToCString jLanguage
+            return jLanguage'
+    result <- pango_language_from_string maybeLanguage
+    result' <- (newBoxed Language) result
+    freeMem maybeLanguage
+    return result'
+
+-- function pango_language_get_default
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "Language"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_language_get_default" pango_language_get_default :: 
+    IO (Ptr Language)
+
+
+languageGetDefault ::
+    (MonadIO m) =>
+    m Language
+languageGetDefault  = liftIO $ do
+    result <- pango_language_get_default
+    result' <- (newBoxed Language) result
+    return result'
+
+-- function pango_log2vis_get_embedding_levels
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pbase_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pbase_dir", argType = TInterface "Pango" "Direction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_log2vis_get_embedding_levels" pango_log2vis_get_embedding_levels :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    CUInt ->                                -- pbase_dir : TInterface "Pango" "Direction"
+    IO Word8
+
+
+log2visGetEmbeddingLevels ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Direction ->                            -- pbase_dir
+    m Word8
+log2visGetEmbeddingLevels text length_ pbase_dir = liftIO $ do
+    text' <- textToCString text
+    let pbase_dir' = (fromIntegral . fromEnum) pbase_dir
+    result <- pango_log2vis_get_embedding_levels text' length_ pbase_dir'
+    freeMem text'
+    return result
+
+-- function pango_lookup_aliases
+-- Args : [Arg {argName = "fontname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "families", argType = TCArray False (-1) 2 (TBasicType TUTF8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : [Arg {argName = "n_families", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- hInArgs : [Arg {argName = "fontname", 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_lookup_aliases" pango_lookup_aliases :: 
+    CString ->                              -- fontname : TBasicType TUTF8
+    Ptr (Ptr CString) ->                    -- families : TCArray False (-1) 2 (TBasicType TUTF8)
+    Ptr Int32 ->                            -- n_families : TBasicType TInt32
+    IO ()
+
+{-# DEPRECATED lookupAliases ["(Since version 1.32)","This function is not thread-safe."]#-}
+lookupAliases ::
+    (MonadIO m) =>
+    T.Text ->                               -- fontname
+    m ([T.Text])
+lookupAliases fontname = liftIO $ do
+    fontname' <- textToCString fontname
+    families <- allocMem :: IO (Ptr (Ptr CString))
+    n_families <- allocMem :: IO (Ptr Int32)
+    pango_lookup_aliases fontname' families n_families
+    n_families' <- peek n_families
+    families' <- peek families
+    families'' <- (unpackUTF8CArrayWithLength n_families') families'
+    (mapCArrayWithLength n_families') freeMem families'
+    freeMem families'
+    freeMem fontname'
+    freeMem families
+    freeMem n_families
+    return families''
+
+-- function pango_markup_parser_finish
+-- Args : [Arg {argName = "context", argType = TInterface "GLib" "MarkupParseContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_list", argType = TInterface "Pango" "AttrList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "context", argType = TInterface "GLib" "MarkupParseContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "pango_markup_parser_finish" pango_markup_parser_finish :: 
+    Ptr GLib.MarkupParseContext ->          -- context : TInterface "GLib" "MarkupParseContext"
+    Ptr (Ptr AttrList) ->                   -- attr_list : TInterface "Pango" "AttrList"
+    Ptr CString ->                          -- text : TBasicType TUTF8
+    Ptr CInt ->                             -- accel_char : TBasicType TUniChar
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+markupParserFinish ::
+    (MonadIO m) =>
+    GLib.MarkupParseContext ->              -- context
+    m (AttrList,T.Text,Char)
+markupParserFinish context = liftIO $ do
+    let context' = unsafeManagedPtrGetPtr context
+    attr_list <- allocMem :: IO (Ptr (Ptr AttrList))
+    text <- allocMem :: IO (Ptr CString)
+    accel_char <- allocMem :: IO (Ptr CInt)
+    onException (do
+        _ <- propagateGError $ pango_markup_parser_finish context' attr_list text accel_char
+        attr_list' <- peek attr_list
+        attr_list'' <- (wrapBoxed AttrList) attr_list'
+        text' <- peek text
+        text'' <- cstringToText text'
+        freeMem text'
+        accel_char' <- peek accel_char
+        let accel_char'' = (chr . fromIntegral) accel_char'
+        touchManagedPtr context
+        freeMem attr_list
+        freeMem text
+        freeMem accel_char
+        return (attr_list'', text'', accel_char'')
+     ) (do
+        freeMem attr_list
+        freeMem text
+        freeMem accel_char
+     )
+
+-- function pango_markup_parser_new
+-- Args : [Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GLib" "MarkupParseContext"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_markup_parser_new" pango_markup_parser_new :: 
+    CInt ->                                 -- accel_marker : TBasicType TUniChar
+    IO (Ptr GLib.MarkupParseContext)
+
+
+markupParserNew ::
+    (MonadIO m) =>
+    Char ->                                 -- accel_marker
+    m GLib.MarkupParseContext
+markupParserNew accel_marker = liftIO $ do
+    let accel_marker' = (fromIntegral . ord) accel_marker
+    result <- pango_markup_parser_new accel_marker'
+    result' <- (newBoxed GLib.MarkupParseContext) result
+    return result'
+
+-- function pango_module_register
+-- Args : [Arg {argName = "module", argType = TInterface "Pango" "IncludedModule", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "module", argType = TInterface "Pango" "IncludedModule", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_module_register" pango_module_register :: 
+    Ptr IncludedModule ->                   -- module : TInterface "Pango" "IncludedModule"
+    IO ()
+
+
+moduleRegister ::
+    (MonadIO m) =>
+    IncludedModule ->                       -- module
+    m ()
+moduleRegister module_ = liftIO $ do
+    let module_' = unsafeManagedPtrGetPtr module_
+    pango_module_register module_'
+    touchManagedPtr module_
+    return ()
+
+-- function pango_parse_enum
+-- Args : [Arg {argName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "possible_values", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_parse_enum" pango_parse_enum :: 
+    CGType ->                               -- type : TBasicType TGType
+    CString ->                              -- str : TBasicType TUTF8
+    Ptr Int32 ->                            -- value : TBasicType TInt32
+    CInt ->                                 -- warn : TBasicType TBoolean
+    Ptr CString ->                          -- possible_values : TBasicType TUTF8
+    IO CInt
+
+
+parseEnum ::
+    (MonadIO m) =>
+    GType ->                                -- type
+    Maybe (T.Text) ->                       -- str
+    Bool ->                                 -- warn
+    m (Bool,Int32,T.Text)
+parseEnum type_ str warn = liftIO $ do
+    let type_' = gtypeToCGType type_
+    maybeStr <- case str of
+        Nothing -> return nullPtr
+        Just jStr -> do
+            jStr' <- textToCString jStr
+            return jStr'
+    value <- allocMem :: IO (Ptr Int32)
+    let warn' = (fromIntegral . fromEnum) warn
+    possible_values <- allocMem :: IO (Ptr CString)
+    result <- pango_parse_enum type_' maybeStr value warn' possible_values
+    let result' = (/= 0) result
+    value' <- peek value
+    possible_values' <- peek possible_values
+    possible_values'' <- cstringToText possible_values'
+    freeMem possible_values'
+    freeMem maybeStr
+    freeMem value
+    freeMem possible_values
+    return (result', value', possible_values'')
+
+-- function pango_parse_markup
+-- Args : [Arg {argName = "markup_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "attr_list", argType = TInterface "Pango" "AttrList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "accel_char", argType = TBasicType TUniChar, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "markup_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_marker", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "pango_parse_markup" pango_parse_markup :: 
+    CString ->                              -- markup_text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    CInt ->                                 -- accel_marker : TBasicType TUniChar
+    Ptr (Ptr AttrList) ->                   -- attr_list : TInterface "Pango" "AttrList"
+    Ptr CString ->                          -- text : TBasicType TUTF8
+    Ptr CInt ->                             -- accel_char : TBasicType TUniChar
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+parseMarkup ::
+    (MonadIO m) =>
+    T.Text ->                               -- markup_text
+    Int32 ->                                -- length
+    Char ->                                 -- accel_marker
+    m (AttrList,T.Text,Char)
+parseMarkup markup_text length_ accel_marker = liftIO $ do
+    markup_text' <- textToCString markup_text
+    let accel_marker' = (fromIntegral . ord) accel_marker
+    attr_list <- allocMem :: IO (Ptr (Ptr AttrList))
+    text <- allocMem :: IO (Ptr CString)
+    accel_char <- allocMem :: IO (Ptr CInt)
+    onException (do
+        _ <- propagateGError $ pango_parse_markup markup_text' length_ accel_marker' attr_list text accel_char
+        attr_list' <- peek attr_list
+        attr_list'' <- (wrapBoxed AttrList) attr_list'
+        text' <- peek text
+        text'' <- cstringToText text'
+        freeMem text'
+        accel_char' <- peek accel_char
+        let accel_char'' = (chr . fromIntegral) accel_char'
+        freeMem markup_text'
+        freeMem attr_list
+        freeMem text
+        freeMem accel_char
+        return (attr_list'', text'', accel_char'')
+     ) (do
+        freeMem markup_text'
+        freeMem attr_list
+        freeMem text
+        freeMem accel_char
+     )
+
+-- function pango_parse_stretch
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_parse_stretch" pango_parse_stretch :: 
+    CString ->                              -- str : TBasicType TUTF8
+    Ptr CUInt ->                            -- stretch : TInterface "Pango" "Stretch"
+    CInt ->                                 -- warn : TBasicType TBoolean
+    IO CInt
+
+
+parseStretch ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    Bool ->                                 -- warn
+    m (Bool,Stretch)
+parseStretch str warn = liftIO $ do
+    str' <- textToCString str
+    stretch <- allocMem :: IO (Ptr CUInt)
+    let warn' = (fromIntegral . fromEnum) warn
+    result <- pango_parse_stretch str' stretch warn'
+    let result' = (/= 0) result
+    stretch' <- peek stretch
+    let stretch'' = (toEnum . fromIntegral) stretch'
+    freeMem str'
+    freeMem stretch
+    return (result', stretch'')
+
+-- function pango_parse_style
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_parse_style" pango_parse_style :: 
+    CString ->                              -- str : TBasicType TUTF8
+    Ptr CUInt ->                            -- style : TInterface "Pango" "Style"
+    CInt ->                                 -- warn : TBasicType TBoolean
+    IO CInt
+
+
+parseStyle ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    Bool ->                                 -- warn
+    m (Bool,Style)
+parseStyle str warn = liftIO $ do
+    str' <- textToCString str
+    style <- allocMem :: IO (Ptr CUInt)
+    let warn' = (fromIntegral . fromEnum) warn
+    result <- pango_parse_style str' style warn'
+    let result' = (/= 0) result
+    style' <- peek style
+    let style'' = (toEnum . fromIntegral) style'
+    freeMem str'
+    freeMem style
+    return (result', style'')
+
+-- function pango_parse_variant
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_parse_variant" pango_parse_variant :: 
+    CString ->                              -- str : TBasicType TUTF8
+    Ptr CUInt ->                            -- variant : TInterface "Pango" "Variant"
+    CInt ->                                 -- warn : TBasicType TBoolean
+    IO CInt
+
+
+parseVariant ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    Bool ->                                 -- warn
+    m (Bool,Variant)
+parseVariant str warn = liftIO $ do
+    str' <- textToCString str
+    variant <- allocMem :: IO (Ptr CUInt)
+    let warn' = (fromIntegral . fromEnum) warn
+    result <- pango_parse_variant str' variant warn'
+    let result' = (/= 0) result
+    variant' <- peek variant
+    let variant'' = (toEnum . fromIntegral) variant'
+    freeMem str'
+    freeMem variant
+    return (result', variant'')
+
+-- function pango_parse_weight
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "warn", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_parse_weight" pango_parse_weight :: 
+    CString ->                              -- str : TBasicType TUTF8
+    Ptr CUInt ->                            -- weight : TInterface "Pango" "Weight"
+    CInt ->                                 -- warn : TBasicType TBoolean
+    IO CInt
+
+
+parseWeight ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    Bool ->                                 -- warn
+    m (Bool,Weight)
+parseWeight str warn = liftIO $ do
+    str' <- textToCString str
+    weight <- allocMem :: IO (Ptr CUInt)
+    let warn' = (fromIntegral . fromEnum) warn
+    result <- pango_parse_weight str' weight warn'
+    let result' = (/= 0) result
+    weight' <- peek weight
+    let weight'' = (toEnum . fromIntegral) weight'
+    freeMem str'
+    freeMem weight
+    return (result', weight'')
+
+-- function pango_quantize_line_geometry
+-- Args : [Arg {argName = "thickness", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "position", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "thickness", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "position", argType = TBasicType TInt32, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_quantize_line_geometry" pango_quantize_line_geometry :: 
+    Ptr Int32 ->                            -- thickness : TBasicType TInt32
+    Ptr Int32 ->                            -- position : TBasicType TInt32
+    IO ()
+
+
+quantizeLineGeometry ::
+    (MonadIO m) =>
+    Int32 ->                                -- thickness
+    Int32 ->                                -- position
+    m (Int32,Int32)
+quantizeLineGeometry thickness position = liftIO $ do
+    thickness' <- allocMem :: IO (Ptr Int32)
+    poke thickness' thickness
+    position' <- allocMem :: IO (Ptr Int32)
+    poke position' position
+    pango_quantize_line_geometry thickness' position'
+    thickness'' <- peek thickness'
+    position'' <- peek position'
+    freeMem thickness'
+    freeMem position'
+    return (thickness'', position'')
+
+-- function pango_read_line
+-- Args : [Arg {argName = "stream", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "str", argType = TInterface "GLib" "String", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "stream", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_read_line" pango_read_line :: 
+    Ptr () ->                               -- stream : TBasicType TVoid
+    Ptr GLib.String ->                      -- str : TInterface "GLib" "String"
+    IO Int32
+
+
+readLine ::
+    (MonadIO m) =>
+    Ptr () ->                               -- stream
+    m (Int32,GLib.String)
+readLine stream = liftIO $ do
+    str <- callocBoxedBytes 24 :: IO (Ptr GLib.String)
+    result <- pango_read_line stream str
+    str' <- (wrapBoxed GLib.String) str
+    return (result, str')
+
+-- function pango_reorder_items
+-- Args : [Arg {argName = "logical_items", argType = TGList (TInterface "Pango" "Item"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "logical_items", argType = TGList (TInterface "Pango" "Item"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGList (TInterface "Pango" "Item")
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_reorder_items" pango_reorder_items :: 
+    Ptr (GList (Ptr Item)) ->               -- logical_items : TGList (TInterface "Pango" "Item")
+    IO (Ptr (GList (Ptr Item)))
+
+
+reorderItems ::
+    (MonadIO m) =>
+    [Item] ->                               -- logical_items
+    m [Item]
+reorderItems logical_items = liftIO $ do
+    let logical_items' = map unsafeManagedPtrGetPtr logical_items
+    logical_items'' <- packGList logical_items'
+    result <- pango_reorder_items logical_items''
+    result' <- unpackGList result
+    result'' <- mapM (wrapBoxed Item) result'
+    g_list_free result
+    mapM_ touchManagedPtr logical_items
+    g_list_free logical_items''
+    return result''
+
+-- function pango_scan_int
+-- Args : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "out", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_scan_int" pango_scan_int :: 
+    Ptr CString ->                          -- pos : TBasicType TUTF8
+    Ptr Int32 ->                            -- out : TBasicType TInt32
+    IO CInt
+
+
+scanInt ::
+    (MonadIO m) =>
+    T.Text ->                               -- pos
+    m (Bool,T.Text,Int32)
+scanInt pos = liftIO $ do
+    pos' <- textToCString pos
+    pos'' <- allocMem :: IO (Ptr CString)
+    poke pos'' pos'
+    out <- allocMem :: IO (Ptr Int32)
+    result <- pango_scan_int pos'' out
+    let result' = (/= 0) result
+    pos''' <- peek pos''
+    pos'''' <- cstringToText pos'''
+    freeMem pos'''
+    out' <- peek out
+    freeMem pos''
+    freeMem out
+    return (result', pos'''', out')
+
+-- function pango_scan_string
+-- Args : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "out", argType = TInterface "GLib" "String", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_scan_string" pango_scan_string :: 
+    Ptr CString ->                          -- pos : TBasicType TUTF8
+    Ptr GLib.String ->                      -- out : TInterface "GLib" "String"
+    IO CInt
+
+
+scanString ::
+    (MonadIO m) =>
+    T.Text ->                               -- pos
+    m (Bool,T.Text,GLib.String)
+scanString pos = liftIO $ do
+    pos' <- textToCString pos
+    pos'' <- allocMem :: IO (Ptr CString)
+    poke pos'' pos'
+    out <- callocBoxedBytes 24 :: IO (Ptr GLib.String)
+    result <- pango_scan_string pos'' out
+    let result' = (/= 0) result
+    pos''' <- peek pos''
+    pos'''' <- cstringToText pos'''
+    freeMem pos'''
+    out' <- (wrapBoxed GLib.String) out
+    freeMem pos''
+    return (result', pos'''', out')
+
+-- function pango_scan_word
+-- Args : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "out", argType = TInterface "GLib" "String", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_scan_word" pango_scan_word :: 
+    Ptr CString ->                          -- pos : TBasicType TUTF8
+    Ptr GLib.String ->                      -- out : TInterface "GLib" "String"
+    IO CInt
+
+
+scanWord ::
+    (MonadIO m) =>
+    T.Text ->                               -- pos
+    m (Bool,T.Text,GLib.String)
+scanWord pos = liftIO $ do
+    pos' <- textToCString pos
+    pos'' <- allocMem :: IO (Ptr CString)
+    poke pos'' pos'
+    out <- callocBoxedBytes 24 :: IO (Ptr GLib.String)
+    result <- pango_scan_word pos'' out
+    let result' = (/= 0) result
+    pos''' <- peek pos''
+    pos'''' <- cstringToText pos'''
+    freeMem pos'''
+    out' <- (wrapBoxed GLib.String) out
+    freeMem pos''
+    return (result', pos'''', out')
+
+-- function pango_script_for_unichar
+-- Args : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Script"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_script_for_unichar" pango_script_for_unichar :: 
+    CInt ->                                 -- ch : TBasicType TUniChar
+    IO CUInt
+
+
+scriptForUnichar ::
+    (MonadIO m) =>
+    Char ->                                 -- ch
+    m Script
+scriptForUnichar ch = liftIO $ do
+    let ch' = (fromIntegral . ord) ch
+    result <- pango_script_for_unichar ch'
+    let result' = (toEnum . fromIntegral) result
+    return result'
+
+-- function pango_script_get_sample_language
+-- Args : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Language"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_script_get_sample_language" pango_script_get_sample_language :: 
+    CUInt ->                                -- script : TInterface "Pango" "Script"
+    IO (Ptr Language)
+
+
+scriptGetSampleLanguage ::
+    (MonadIO m) =>
+    Script ->                               -- script
+    m Language
+scriptGetSampleLanguage script = liftIO $ do
+    let script' = (fromIntegral . fromEnum) script
+    result <- pango_script_get_sample_language script'
+    result' <- (wrapBoxed Language) result
+    return result'
+
+-- function pango_shape
+-- Args : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_shape" pango_shape :: 
+    CString ->                              -- text : TBasicType TUTF8
+    Int32 ->                                -- length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
+    IO ()
+
+
+shape ::
+    (MonadIO m) =>
+    T.Text ->                               -- text
+    Int32 ->                                -- length
+    Analysis ->                             -- analysis
+    GlyphString ->                          -- glyphs
+    m ()
+shape text length_ analysis glyphs = liftIO $ do
+    text' <- textToCString text
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    let glyphs' = unsafeManagedPtrGetPtr glyphs
+    pango_shape text' length_ analysis' glyphs'
+    touchManagedPtr analysis
+    touchManagedPtr glyphs
+    freeMem text'
+    return ()
+
+-- function pango_shape_full
+-- Args : [Arg {argName = "item_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "item_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "paragraph_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "paragraph_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "item_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "item_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "paragraph_text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "paragraph_length", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "analysis", argType = TInterface "Pango" "Analysis", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_shape_full" pango_shape_full :: 
+    CString ->                              -- item_text : TBasicType TUTF8
+    Int32 ->                                -- item_length : TBasicType TInt32
+    CString ->                              -- paragraph_text : TBasicType TUTF8
+    Int32 ->                                -- paragraph_length : TBasicType TInt32
+    Ptr Analysis ->                         -- analysis : TInterface "Pango" "Analysis"
+    Ptr GlyphString ->                      -- glyphs : TInterface "Pango" "GlyphString"
+    IO ()
+
+
+shapeFull ::
+    (MonadIO m) =>
+    T.Text ->                               -- item_text
+    Int32 ->                                -- item_length
+    Maybe (T.Text) ->                       -- paragraph_text
+    Int32 ->                                -- paragraph_length
+    Analysis ->                             -- analysis
+    GlyphString ->                          -- glyphs
+    m ()
+shapeFull item_text item_length paragraph_text paragraph_length analysis glyphs = liftIO $ do
+    item_text' <- textToCString item_text
+    maybeParagraph_text <- case paragraph_text of
+        Nothing -> return nullPtr
+        Just jParagraph_text -> do
+            jParagraph_text' <- textToCString jParagraph_text
+            return jParagraph_text'
+    let analysis' = unsafeManagedPtrGetPtr analysis
+    let glyphs' = unsafeManagedPtrGetPtr glyphs
+    pango_shape_full item_text' item_length maybeParagraph_text paragraph_length analysis' glyphs'
+    touchManagedPtr analysis
+    touchManagedPtr glyphs
+    freeMem item_text'
+    freeMem maybeParagraph_text
+    return ()
+
+-- function pango_skip_space
+-- Args : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "pos", argType = TBasicType TUTF8, direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_skip_space" pango_skip_space :: 
+    Ptr CString ->                          -- pos : TBasicType TUTF8
+    IO CInt
+
+
+skipSpace ::
+    (MonadIO m) =>
+    T.Text ->                               -- pos
+    m (Bool,T.Text)
+skipSpace pos = liftIO $ do
+    pos' <- textToCString pos
+    pos'' <- allocMem :: IO (Ptr CString)
+    poke pos'' pos'
+    result <- pango_skip_space pos''
+    let result' = (/= 0) result
+    pos''' <- peek pos''
+    pos'''' <- cstringToText pos'''
+    freeMem pos'''
+    freeMem pos''
+    return (result', pos'''')
+
+-- function pango_split_file_list
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TCArray True (-1) (-1) (TBasicType TUTF8)
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_split_file_list" pango_split_file_list :: 
+    CString ->                              -- str : TBasicType TUTF8
+    IO (Ptr CString)
+
+
+splitFileList ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    m [T.Text]
+splitFileList str = liftIO $ do
+    str' <- textToCString str
+    result <- pango_split_file_list str'
+    result' <- unpackZeroTerminatedUTF8CArray result
+    mapZeroTerminatedCArray freeMem result
+    freeMem result
+    freeMem str'
+    return result'
+
+-- function pango_trim_string
+-- Args : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "str", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_trim_string" pango_trim_string :: 
+    CString ->                              -- str : TBasicType TUTF8
+    IO CString
+
+
+trimString ::
+    (MonadIO m) =>
+    T.Text ->                               -- str
+    m T.Text
+trimString str = liftIO $ do
+    str' <- textToCString str
+    result <- pango_trim_string str'
+    result' <- cstringToText result
+    freeMem result
+    freeMem str'
+    return result'
+
+-- function pango_unichar_direction
+-- Args : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Direction"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_unichar_direction" pango_unichar_direction :: 
+    CInt ->                                 -- ch : TBasicType TUniChar
+    IO CUInt
+
+
+unicharDirection ::
+    (MonadIO m) =>
+    Char ->                                 -- ch
+    m Direction
+unicharDirection ch = liftIO $ do
+    let ch' = (fromIntegral . ord) ch
+    result <- pango_unichar_direction ch'
+    let result' = (toEnum . fromIntegral) result
+    return result'
+
+-- function pango_units_from_double
+-- Args : [Arg {argName = "d", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "d", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_units_from_double" pango_units_from_double :: 
+    CDouble ->                              -- d : TBasicType TDouble
+    IO Int32
+
+
+unitsFromDouble ::
+    (MonadIO m) =>
+    Double ->                               -- d
+    m Int32
+unitsFromDouble d = liftIO $ do
+    let d' = realToFrac d
+    result <- pango_units_from_double d'
+    return result
+
+-- function pango_units_to_double
+-- Args : [Arg {argName = "i", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "i", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TDouble
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_units_to_double" pango_units_to_double :: 
+    Int32 ->                                -- i : TBasicType TInt32
+    IO CDouble
+
+
+unitsToDouble ::
+    (MonadIO m) =>
+    Int32 ->                                -- i
+    m Double
+unitsToDouble i = liftIO $ do
+    result <- pango_units_to_double i
+    let result' = realToFrac result
+    return result'
+
+-- function pango_version
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_version" pango_version :: 
+    IO Int32
+
+
+version ::
+    (MonadIO m) =>
+    m Int32
+version  = liftIO $ do
+    result <- pango_version
+    return result
+
+-- function pango_version_check
+-- Args : [Arg {argName = "required_major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "required_minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "required_micro", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "required_major", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "required_minor", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "required_micro", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_version_check" pango_version_check :: 
+    Int32 ->                                -- required_major : TBasicType TInt32
+    Int32 ->                                -- required_minor : TBasicType TInt32
+    Int32 ->                                -- required_micro : TBasicType TInt32
+    IO CString
+
+
+versionCheck ::
+    (MonadIO m) =>
+    Int32 ->                                -- required_major
+    Int32 ->                                -- required_minor
+    Int32 ->                                -- required_micro
+    m T.Text
+versionCheck required_major required_minor required_micro = liftIO $ do
+    result <- pango_version_check required_major required_minor required_micro
+    result' <- cstringToText result
+    return result'
+
+-- function pango_version_string
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_version_string" pango_version_string :: 
+    IO CString
+
+
+versionString ::
+    (MonadIO m) =>
+    m T.Text
+versionString  = liftIO $ do
+    result <- pango_version_string
+    result' <- cstringToText result
+    return result'
+
+-- callback AttrClassDestroyFieldCallback
+attrClassDestroyFieldCallbackClosure :: AttrClassDestroyFieldCallback -> IO Closure
+attrClassDestroyFieldCallbackClosure cb = newCClosure =<< mkAttrClassDestroyFieldCallback wrapped
+    where wrapped = attrClassDestroyFieldCallbackWrapper Nothing cb
+
+type AttrClassDestroyFieldCallbackC =
+    Ptr Attribute ->
+    IO ()
+
+foreign import ccall "wrapper"
+    mkAttrClassDestroyFieldCallback :: AttrClassDestroyFieldCallbackC -> IO (FunPtr AttrClassDestroyFieldCallbackC)
+
+type AttrClassDestroyFieldCallback =
+    Attribute ->
+    IO ()
+
+noAttrClassDestroyFieldCallback :: Maybe AttrClassDestroyFieldCallback
+noAttrClassDestroyFieldCallback = Nothing
+
+attrClassDestroyFieldCallbackWrapper ::
+    Maybe (Ptr (FunPtr (AttrClassDestroyFieldCallbackC))) ->
+    AttrClassDestroyFieldCallback ->
+    Ptr Attribute ->
+    IO ()
+attrClassDestroyFieldCallbackWrapper funptrptr _cb attr = do
+    attr' <- (newPtr 16 Attribute) attr
+    _cb  attr'
+    maybeReleaseFunPtr funptrptr
+
+-- callback AttrClassEqualFieldCallback
+attrClassEqualFieldCallbackClosure :: AttrClassEqualFieldCallback -> IO Closure
+attrClassEqualFieldCallbackClosure cb = newCClosure =<< mkAttrClassEqualFieldCallback wrapped
+    where wrapped = attrClassEqualFieldCallbackWrapper Nothing cb
+
+type AttrClassEqualFieldCallbackC =
+    Ptr Attribute ->
+    Ptr Attribute ->
+    IO CInt
+
+foreign import ccall "wrapper"
+    mkAttrClassEqualFieldCallback :: AttrClassEqualFieldCallbackC -> IO (FunPtr AttrClassEqualFieldCallbackC)
+
+type AttrClassEqualFieldCallback =
+    Attribute ->
+    Attribute ->
+    IO Bool
+
+noAttrClassEqualFieldCallback :: Maybe AttrClassEqualFieldCallback
+noAttrClassEqualFieldCallback = Nothing
+
+attrClassEqualFieldCallbackWrapper ::
+    Maybe (Ptr (FunPtr (AttrClassEqualFieldCallbackC))) ->
+    AttrClassEqualFieldCallback ->
+    Ptr Attribute ->
+    Ptr Attribute ->
+    IO CInt
+attrClassEqualFieldCallbackWrapper funptrptr _cb attr1 attr2 = do
+    attr1' <- (newPtr 16 Attribute) attr1
+    attr2' <- (newPtr 16 Attribute) attr2
+    result <- _cb  attr1' attr2'
+    maybeReleaseFunPtr funptrptr
+    let result' = (fromIntegral . fromEnum) result
+    return result'
+
+-- callback IncludedModuleListFieldCallback
+includedModuleListFieldCallbackClosure :: IncludedModuleListFieldCallback -> IO Closure
+includedModuleListFieldCallbackClosure cb = newCClosure =<< mkIncludedModuleListFieldCallback wrapped
+    where wrapped = includedModuleListFieldCallbackWrapper Nothing cb
+
+type IncludedModuleListFieldCallbackC =
+    Ptr EngineInfo ->
+    Int32 ->
+    IO ()
+
+foreign import ccall "wrapper"
+    mkIncludedModuleListFieldCallback :: IncludedModuleListFieldCallbackC -> IO (FunPtr IncludedModuleListFieldCallbackC)
+
+type IncludedModuleListFieldCallback =
+    EngineInfo ->
+    Int32 ->
+    IO ()
+
+noIncludedModuleListFieldCallback :: Maybe IncludedModuleListFieldCallback
+noIncludedModuleListFieldCallback = Nothing
+
+includedModuleListFieldCallbackWrapper ::
+    Maybe (Ptr (FunPtr (IncludedModuleListFieldCallbackC))) ->
+    IncludedModuleListFieldCallback ->
+    Ptr EngineInfo ->
+    Int32 ->
+    IO ()
+includedModuleListFieldCallbackWrapper funptrptr _cb engines n_engines = do
+    engines' <- (newPtr 40 EngineInfo) engines
+    _cb  engines' n_engines
+    maybeReleaseFunPtr funptrptr
+
+-- callback IncludedModuleInitFieldCallback
+includedModuleInitFieldCallbackClosure :: IncludedModuleInitFieldCallback -> IO Closure
+includedModuleInitFieldCallbackClosure cb = newCClosure =<< mkIncludedModuleInitFieldCallback wrapped
+    where wrapped = includedModuleInitFieldCallbackWrapper Nothing cb
+
+type IncludedModuleInitFieldCallbackC =
+    Ptr GObject.TypeModule ->
+    IO ()
+
+foreign import ccall "wrapper"
+    mkIncludedModuleInitFieldCallback :: IncludedModuleInitFieldCallbackC -> IO (FunPtr IncludedModuleInitFieldCallbackC)
+
+type IncludedModuleInitFieldCallback =
+    GObject.TypeModule ->
+    IO ()
+
+noIncludedModuleInitFieldCallback :: Maybe IncludedModuleInitFieldCallback
+noIncludedModuleInitFieldCallback = Nothing
+
+includedModuleInitFieldCallbackWrapper ::
+    Maybe (Ptr (FunPtr (IncludedModuleInitFieldCallbackC))) ->
+    IncludedModuleInitFieldCallback ->
+    Ptr GObject.TypeModule ->
+    IO ()
+includedModuleInitFieldCallbackWrapper funptrptr _cb module_ = do
+    module_' <- (newObject GObject.TypeModule) module_
+    _cb  module_'
+    maybeReleaseFunPtr funptrptr
+
+-- callback IncludedModuleExitFieldCallback
+includedModuleExitFieldCallbackClosure :: IncludedModuleExitFieldCallback -> IO Closure
+includedModuleExitFieldCallbackClosure cb = newCClosure =<< mkIncludedModuleExitFieldCallback wrapped
+    where wrapped = includedModuleExitFieldCallbackWrapper Nothing cb
+
+type IncludedModuleExitFieldCallbackC =
+    IO ()
+
+foreign import ccall "wrapper"
+    mkIncludedModuleExitFieldCallback :: IncludedModuleExitFieldCallbackC -> IO (FunPtr IncludedModuleExitFieldCallbackC)
+
+type IncludedModuleExitFieldCallback =
+    IO ()
+
+noIncludedModuleExitFieldCallback :: Maybe IncludedModuleExitFieldCallback
+noIncludedModuleExitFieldCallback = Nothing
+
+includedModuleExitFieldCallbackWrapper ::
+    Maybe (Ptr (FunPtr (IncludedModuleExitFieldCallbackC))) ->
+    IncludedModuleExitFieldCallback ->
+    IO ()
+includedModuleExitFieldCallbackWrapper funptrptr _cb = do
+    _cb 
+    maybeReleaseFunPtr funptrptr
+
diff --git a/GI/PangoAttributes.hs b/GI/PangoAttributes.hs
new file mode 100644
--- /dev/null
+++ b/GI/PangoAttributes.hs
@@ -0,0 +1,72 @@
+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-}
+
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+{-# LANGUAGE ForeignFunctionInterface, ConstraintKinds,
+    TypeFamilies, MultiParamTypeClasses, KindSignatures,
+    FlexibleInstances, UndecidableInstances, DataKinds,
+    OverloadedStrings, NegativeLiterals, FlexibleContexts #-}
+
+module GI.PangoAttributes where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+import Data.Char
+import Data.Int
+import Data.Word
+import qualified Data.ByteString.Char8 as B
+import Data.ByteString.Char8 (ByteString)
+import qualified Data.Map as Map
+import Foreign.C
+import Foreign.Ptr
+import Foreign.ForeignPtr
+import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
+import Foreign.Storable (peek, poke, sizeOf)
+import Control.Applicative ((<$>))
+import Control.Exception (onException)
+import Control.Monad.IO.Class
+import qualified Data.Text as T
+
+import Data.GI.Base.Attributes hiding (get, set)
+import Data.GI.Base.BasicTypes
+import Data.GI.Base.BasicConversions
+import Data.GI.Base.Closure
+import Data.GI.Base.GError
+import Data.GI.Base.GHashTable
+import Data.GI.Base.GParamSpec
+import Data.GI.Base.GVariant
+import Data.GI.Base.GValue
+import Data.GI.Base.ManagedPtr
+import Data.GI.Base.Overloading
+import Data.GI.Base.Properties hiding (new)
+import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId)
+import Data.GI.Base.Utils
+
+import GI.Pango
+
+type instance AttributeList Context = '[ ]
+
+type instance AttributeList Engine = '[ ]
+
+type instance AttributeList EngineLang = '[ ]
+
+type instance AttributeList EngineShape = '[ ]
+
+type instance AttributeList Font = '[ ]
+
+type instance AttributeList FontFace = '[ ]
+
+type instance AttributeList FontFamily = '[ ]
+
+type instance AttributeList FontMap = '[ ]
+
+type instance AttributeList Fontset = '[ ]
+
+type instance AttributeList FontsetSimple = '[ ]
+
+type instance AttributeList Layout = '[ ]
+
+type instance AttributeList Renderer = '[ ]
+
diff --git a/GI/PangoSignals.hs b/GI/PangoSignals.hs
new file mode 100644
--- /dev/null
+++ b/GI/PangoSignals.hs
@@ -0,0 +1,41 @@
+-- Generated code.
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+{-# LANGUAGE DataKinds,    FlexibleInstances,
+             TypeFamilies, MultiParamTypeClasses,
+               TypeOperators #-}
+
+module GI.PangoSignals where
+
+import Data.GI.Base.Properties (GObjectNotifySignalInfo)
+import Data.GI.Base.Signals
+import Data.GI.Base.Overloading
+
+import qualified GI.GObjectSignals as GObject
+import GI.Pango
+
+type instance SignalList Context = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Engine = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList EngineLang = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList EngineShape = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Font = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList FontFace = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList FontFamily = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList FontMap = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Fontset = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList FontsetSimple = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Layout = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
+type instance SignalList Renderer = '[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)]
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,502 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+import Distribution.Simple
+main = defaultMain
diff --git a/gi-pango.cabal b/gi-pango.cabal
new file mode 100644
--- /dev/null
+++ b/gi-pango.cabal
@@ -0,0 +1,26 @@
+-- Autogenerated, do not edit.
+name:               gi-pango
+version:            0.1.36.8
+synopsis:           Pango bindings
+description:        Bindings for Pango, autogenerated by haskell-gi.
+homepage:           https://github.com/haskell-gi/haskell-gi
+license:            LGPL-2.1
+license-file:       LICENSE
+author:             Will Thompson, Iñaki García Etxebarria and Jonas Platte
+maintainer:         Iñaki García Etxebarria (garetxe@gmail.com)
+category:           Bindings
+build-type:         Simple
+cabal-version:      >=1.10
+
+library
+    default-language:   Haskell2010
+    exposed-modules:    GI.Pango, GI.PangoAttributes, GI.PangoSignals
+    pkgconfig-depends:  pango >= 1.36
+    build-depends: base >= 4.6 && <4.9,
+        haskell-gi-base >= 0.8 && < 1,
+        gi-glib >= 0.2.44.8 && < 0.3,
+        gi-gobject >= 0.2.44.8 && < 0.3,
+        bytestring >= 0.10,
+        containers >= 0.5,
+        text >= 1.0,
+        transformers >= 0.3
