diff --git a/GI/Pango.hs b/GI/Pango.hs
--- a/GI/Pango.hs
+++ b/GI/Pango.hs
@@ -1,11467 +1,38 @@
--- 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'
-    checkUnexpectedReturnNULL "pango_attr_iterator_get_attrs" result
-    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
-    checkUnexpectedReturnNULL "pango_attr_list_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_attr_list_copy" result
-    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_
-    checkUnexpectedReturnNULL "pango_attr_list_filter" result
-    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'
-    checkUnexpectedReturnNULL "pango_attr_list_ref" result
-    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'
-    checkUnexpectedReturnNULL "pango_color_copy" result
-    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'
-    checkUnexpectedReturnNULL "pango_color_to_string" result
-    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
-    checkUnexpectedReturnNULL "pango_context_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_get_font_description" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_get_font_map" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_get_language" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_get_matrix" result
-    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
-    checkUnexpectedReturnNULL "pango_context_get_metrics" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_load_font" result
-    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'
-    checkUnexpectedReturnNULL "pango_context_load_fontset" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_describe" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_describe_with_absolute_size" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_get_font_map" result
-    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
-    checkUnexpectedReturnNULL "pango_font_get_metrics" result
-    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
-    checkUnexpectedReturnNULL "pango_font_description_new" result
-    result' <- (wrapBoxed FontDescription) result
-    return result'
-
--- method FontDescription::better_match
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_better_match" pango_font_description_better_match :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Ptr FontDescription ->                  -- old_match : TInterface "Pango" "FontDescription"
-    Ptr FontDescription ->                  -- new_match : TInterface "Pango" "FontDescription"
-    IO CInt
-
-
-fontDescriptionBetterMatch ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Maybe (FontDescription) ->              -- old_match
-    FontDescription ->                      -- new_match
-    m Bool
-fontDescriptionBetterMatch _obj old_match new_match = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    maybeOld_match <- case old_match of
-        Nothing -> return nullPtr
-        Just jOld_match -> do
-            let jOld_match' = unsafeManagedPtrGetPtr jOld_match
-            return jOld_match'
-    let new_match' = unsafeManagedPtrGetPtr new_match
-    result <- pango_font_description_better_match _obj' maybeOld_match new_match'
-    let result' = (/= 0) result
-    touchManagedPtr _obj
-    whenJust old_match touchManagedPtr
-    touchManagedPtr new_match
-    return result'
-
--- method FontDescription::copy
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "FontDescription"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_copy" pango_font_description_copy :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO (Ptr FontDescription)
-
-
-fontDescriptionCopy ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m FontDescription
-fontDescriptionCopy _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_copy _obj'
-    checkUnexpectedReturnNULL "pango_font_description_copy" result
-    result' <- (wrapBoxed FontDescription) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::copy_static
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "FontDescription"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_copy_static" pango_font_description_copy_static :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO (Ptr FontDescription)
-
-
-fontDescriptionCopyStatic ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m FontDescription
-fontDescriptionCopyStatic _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_copy_static _obj'
-    checkUnexpectedReturnNULL "pango_font_description_copy_static" result
-    result' <- (wrapBoxed FontDescription) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::equal
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_equal" pango_font_description_equal :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Ptr FontDescription ->                  -- desc2 : TInterface "Pango" "FontDescription"
-    IO CInt
-
-
-fontDescriptionEqual ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    FontDescription ->                      -- desc2
-    m Bool
-fontDescriptionEqual _obj desc2 = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let desc2' = unsafeManagedPtrGetPtr desc2
-    result <- pango_font_description_equal _obj' desc2'
-    let result' = (/= 0) result
-    touchManagedPtr _obj
-    touchManagedPtr desc2
-    return result'
-
--- method FontDescription::free
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_free" pango_font_description_free :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO ()
-
-
-fontDescriptionFree ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m ()
-fontDescriptionFree _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    pango_font_description_free _obj'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::get_family
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TUTF8
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_family" pango_font_description_get_family :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CString
-
-
-fontDescriptionGetFamily ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m T.Text
-fontDescriptionGetFamily _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_family _obj'
-    checkUnexpectedReturnNULL "pango_font_description_get_family" result
-    result' <- cstringToText result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_gravity
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "Gravity"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_gravity" pango_font_description_get_gravity :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetGravity ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Gravity
-fontDescriptionGetGravity _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_gravity _obj'
-    let result' = (toEnum . fromIntegral) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_set_fields
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "FontMask"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_set_fields" pango_font_description_get_set_fields :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetSetFields ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m [FontMask]
-fontDescriptionGetSetFields _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_set_fields _obj'
-    let result' = wordToGFlags result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_size
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TInt32
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_size" pango_font_description_get_size :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO Int32
-
-
-fontDescriptionGetSize ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Int32
-fontDescriptionGetSize _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_size _obj'
-    touchManagedPtr _obj
-    return result
-
--- method FontDescription::get_size_is_absolute
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TBoolean
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_size_is_absolute" pango_font_description_get_size_is_absolute :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CInt
-
-
-fontDescriptionGetSizeIsAbsolute ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Bool
-fontDescriptionGetSizeIsAbsolute _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_size_is_absolute _obj'
-    let result' = (/= 0) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_stretch
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "Stretch"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_stretch" pango_font_description_get_stretch :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetStretch ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Stretch
-fontDescriptionGetStretch _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_stretch _obj'
-    let result' = (toEnum . fromIntegral) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_style
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "Style"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_style" pango_font_description_get_style :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetStyle ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Style
-fontDescriptionGetStyle _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_style _obj'
-    let result' = (toEnum . fromIntegral) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_variant
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "Variant"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_variant" pango_font_description_get_variant :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetVariant ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Variant
-fontDescriptionGetVariant _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_variant _obj'
-    let result' = (toEnum . fromIntegral) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::get_weight
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TInterface "Pango" "Weight"
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_get_weight" pango_font_description_get_weight :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CUInt
-
-
-fontDescriptionGetWeight ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Weight
-fontDescriptionGetWeight _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_get_weight _obj'
-    let result' = (toEnum . fromIntegral) result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::hash
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TUInt32
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_hash" pango_font_description_hash :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO Word32
-
-
-fontDescriptionHash ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m Word32
-fontDescriptionHash _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_hash _obj'
-    touchManagedPtr _obj
-    return result
-
--- method FontDescription::merge
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_merge" pango_font_description_merge :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
-    CInt ->                                 -- replace_existing : TBasicType TBoolean
-    IO ()
-
-
-fontDescriptionMerge ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Maybe (FontDescription) ->              -- desc_to_merge
-    Bool ->                                 -- replace_existing
-    m ()
-fontDescriptionMerge _obj desc_to_merge replace_existing = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    maybeDesc_to_merge <- case desc_to_merge of
-        Nothing -> return nullPtr
-        Just jDesc_to_merge -> do
-            let jDesc_to_merge' = unsafeManagedPtrGetPtr jDesc_to_merge
-            return jDesc_to_merge'
-    let replace_existing' = (fromIntegral . fromEnum) replace_existing
-    pango_font_description_merge _obj' maybeDesc_to_merge replace_existing'
-    touchManagedPtr _obj
-    whenJust desc_to_merge touchManagedPtr
-    return ()
-
--- method FontDescription::merge_static
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_merge_static" pango_font_description_merge_static :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
-    CInt ->                                 -- replace_existing : TBasicType TBoolean
-    IO ()
-
-
-fontDescriptionMergeStatic ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    FontDescription ->                      -- desc_to_merge
-    Bool ->                                 -- replace_existing
-    m ()
-fontDescriptionMergeStatic _obj desc_to_merge replace_existing = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let desc_to_merge' = unsafeManagedPtrGetPtr desc_to_merge
-    let replace_existing' = (fromIntegral . fromEnum) replace_existing
-    pango_font_description_merge_static _obj' desc_to_merge' replace_existing'
-    touchManagedPtr _obj
-    touchManagedPtr desc_to_merge
-    return ()
-
--- method FontDescription::set_absolute_size
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_absolute_size" pango_font_description_set_absolute_size :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CDouble ->                              -- size : TBasicType TDouble
-    IO ()
-
-
-fontDescriptionSetAbsoluteSize ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Double ->                               -- size
-    m ()
-fontDescriptionSetAbsoluteSize _obj size = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let size' = realToFrac size
-    pango_font_description_set_absolute_size _obj' size'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_family
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_family" pango_font_description_set_family :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CString ->                              -- family : TBasicType TUTF8
-    IO ()
-
-
-fontDescriptionSetFamily ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    T.Text ->                               -- family
-    m ()
-fontDescriptionSetFamily _obj family = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    family' <- textToCString family
-    pango_font_description_set_family _obj' family'
-    touchManagedPtr _obj
-    freeMem family'
-    return ()
-
--- method FontDescription::set_family_static
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_family_static" pango_font_description_set_family_static :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CString ->                              -- family : TBasicType TUTF8
-    IO ()
-
-
-fontDescriptionSetFamilyStatic ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    T.Text ->                               -- family
-    m ()
-fontDescriptionSetFamilyStatic _obj family = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    family' <- textToCString family
-    pango_font_description_set_family_static _obj' family'
-    touchManagedPtr _obj
-    freeMem family'
-    return ()
-
--- method FontDescription::set_gravity
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_gravity" pango_font_description_set_gravity :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
-    IO ()
-
-
-fontDescriptionSetGravity ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Gravity ->                              -- gravity
-    m ()
-fontDescriptionSetGravity _obj gravity = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let gravity' = (fromIntegral . fromEnum) gravity
-    pango_font_description_set_gravity _obj' gravity'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_size
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_size" pango_font_description_set_size :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    Int32 ->                                -- size : TBasicType TInt32
-    IO ()
-
-
-fontDescriptionSetSize ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Int32 ->                                -- size
-    m ()
-fontDescriptionSetSize _obj size = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    pango_font_description_set_size _obj' size
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_stretch
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_stretch" pango_font_description_set_stretch :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- stretch : TInterface "Pango" "Stretch"
-    IO ()
-
-
-fontDescriptionSetStretch ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Stretch ->                              -- stretch
-    m ()
-fontDescriptionSetStretch _obj stretch = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let stretch' = (fromIntegral . fromEnum) stretch
-    pango_font_description_set_stretch _obj' stretch'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_style
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_style" pango_font_description_set_style :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- style : TInterface "Pango" "Style"
-    IO ()
-
-
-fontDescriptionSetStyle ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Style ->                                -- style
-    m ()
-fontDescriptionSetStyle _obj style = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let style' = (fromIntegral . fromEnum) style
-    pango_font_description_set_style _obj' style'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_variant
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_variant" pango_font_description_set_variant :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- variant : TInterface "Pango" "Variant"
-    IO ()
-
-
-fontDescriptionSetVariant ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Variant ->                              -- variant
-    m ()
-fontDescriptionSetVariant _obj variant = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let variant' = (fromIntegral . fromEnum) variant
-    pango_font_description_set_variant _obj' variant'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::set_weight
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_set_weight" pango_font_description_set_weight :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- weight : TInterface "Pango" "Weight"
-    IO ()
-
-
-fontDescriptionSetWeight ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    Weight ->                               -- weight
-    m ()
-fontDescriptionSetWeight _obj weight = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let weight' = (fromIntegral . fromEnum) weight
-    pango_font_description_set_weight _obj' weight'
-    touchManagedPtr _obj
-    return ()
-
--- method FontDescription::to_filename
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TUTF8
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_to_filename" pango_font_description_to_filename :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CString
-
-
-fontDescriptionToFilename ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m T.Text
-fontDescriptionToFilename _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_to_filename _obj'
-    checkUnexpectedReturnNULL "pango_font_description_to_filename" result
-    result' <- cstringToText result
-    freeMem result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::to_string
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TUTF8
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_to_string" pango_font_description_to_string :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    IO CString
-
-
-fontDescriptionToString ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    m T.Text
-fontDescriptionToString _obj = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    result <- pango_font_description_to_string _obj'
-    checkUnexpectedReturnNULL "pango_font_description_to_string" result
-    result' <- cstringToText result
-    freeMem result
-    touchManagedPtr _obj
-    return result'
-
--- method FontDescription::unset_fields
--- method type : OrdinaryMethod
--- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- Lengths : []
--- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
--- returnType : TBasicType TVoid
--- throws : False
--- Skip return : False
-
-foreign import ccall "pango_font_description_unset_fields" pango_font_description_unset_fields :: 
-    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
-    CUInt ->                                -- to_unset : TInterface "Pango" "FontMask"
-    IO ()
-
-
-fontDescriptionUnsetFields ::
-    (MonadIO m) =>
-    FontDescription ->                      -- _obj
-    [FontMask] ->                           -- to_unset
-    m ()
-fontDescriptionUnsetFields _obj to_unset = liftIO $ do
-    let _obj' = unsafeManagedPtrGetPtr _obj
-    let to_unset' = gflagsToWord to_unset
-    pango_font_description_unset_fields _obj' to_unset'
-    touchManagedPtr _obj
-    return ()
-
--- 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'
-    checkUnexpectedReturnNULL "pango_font_face_describe" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_face_get_face_name" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_family_get_name" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_map_create_context" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_map_get_shape_engine_type" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_map_load_font" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_map_load_fontset" result
-    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
-    checkUnexpectedReturnNULL "pango_font_metrics_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_metrics_ref" result
-    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
-    checkUnexpectedReturnNULL "pango_fontset_get_font" result
-    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'
-    checkUnexpectedReturnNULL "pango_fontset_get_metrics" result
-    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'
-    checkUnexpectedReturnNULL "pango_fontset_simple_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_glyph_item_apply_attrs" result
-    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'
-    checkUnexpectedReturnNULL "pango_glyph_item_copy" result
-    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
-    checkUnexpectedReturnNULL "pango_glyph_item_split" result
-    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'
-    checkUnexpectedReturnNULL "pango_glyph_item_iter_copy" result
-    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
-    checkUnexpectedReturnNULL "pango_glyph_string_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_glyph_string_copy" result
-    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
-    checkUnexpectedReturnNULL "pango_item_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_item_copy" result
-    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
-    checkUnexpectedReturnNULL "pango_item_split" result
-    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'
-    checkUnexpectedReturnNULL "pango_language_get_sample_string" result
-    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
-    checkUnexpectedReturnNULL "pango_language_get_scripts" result
-    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'
-    checkUnexpectedReturnNULL "pango_language_to_string" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_copy" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_attributes" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_context" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_font_description" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_iter" result
-    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
-    checkUnexpectedReturnNULL "pango_layout_get_line" result
-    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
-    checkUnexpectedReturnNULL "pango_layout_get_line_readonly" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_lines" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_lines_readonly" result
-    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
-    checkUnexpectedReturnNULL "pango_layout_get_log_attrs_readonly" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_tabs" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_get_text" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_copy" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_layout" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_line" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_line_readonly" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_run" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_iter_get_run_readonly" result
-    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'
-    checkUnexpectedReturnNULL "pango_layout_line_ref" result
-    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'
-    checkUnexpectedReturnNULL "pango_matrix_copy" result
-    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'
-    checkUnexpectedReturnNULL "pango_renderer_get_color" result
-    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'
-    checkUnexpectedReturnNULL "pango_renderer_get_layout" result
-    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'
-    checkUnexpectedReturnNULL "pango_renderer_get_layout_line" result
-    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'
-    checkUnexpectedReturnNULL "pango_renderer_get_matrix" result
-    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'
-    checkUnexpectedReturnNULL "pango_tab_array_new" result
-    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'
-    checkUnexpectedReturnNULL "pango_tab_array_copy" result
-    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_'
-    checkUnexpectedReturnNULL "pango_attr_type_get_name" result
-    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'
-    checkUnexpectedReturnNULL "pango_config_key_get" result
-    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'
-    checkUnexpectedReturnNULL "pango_config_key_get_system" result
-    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'
-    checkUnexpectedReturnNULL "pango_font_description_from_string" result
-    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
-    checkUnexpectedReturnNULL "pango_get_lib_subdirectory" result
-    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
-    checkUnexpectedReturnNULL "pango_get_sysconf_subdirectory" result
-    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
-    checkUnexpectedReturnNULL "pango_itemize" result
-    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
-    checkUnexpectedReturnNULL "pango_itemize_with_base_dir" result
-    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
-    checkUnexpectedReturnNULL "pango_language_from_string" result
-    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
-    checkUnexpectedReturnNULL "pango_language_get_default" result
-    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'
-    checkUnexpectedReturnNULL "pango_markup_parser_new" result
-    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''
-    checkUnexpectedReturnNULL "pango_reorder_items" result
-    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'
-    checkUnexpectedReturnNULL "pango_script_get_sample_language" result
-    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'
-    checkUnexpectedReturnNULL "pango_split_file_list" result
-    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'
-    checkUnexpectedReturnNULL "pango_trim_string" result
-    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
-    checkUnexpectedReturnNULL "pango_version_check" result
-    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
-    checkUnexpectedReturnNULL "pango_version_string" result
-    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
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango
+    (     module GI.Pango.Callbacks               ,
+    module GI.Pango.Constants               ,
+    module GI.Pango.Enums                   ,
+    module GI.Pango.Flags                   ,
+    module GI.Pango.Functions               ,
+    module GI.Pango.Objects                 ,
+    module GI.Pango.Structs                 ,
+
+
+    ) where
+
+import GI.Pango.Callbacks
+import GI.Pango.Constants
+import GI.Pango.Enums
+import GI.Pango.Flags
+import GI.Pango.Functions
+import GI.Pango.Objects
+import GI.Pango.Structs
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
 
diff --git a/GI/Pango/Callbacks.hs b/GI/Pango/Callbacks.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Callbacks.hs
@@ -0,0 +1,310 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Callbacks
+    ( 
+
+ -- * Signals
+-- ** AttrClassDestroyFieldCallback
+    AttrClassDestroyFieldCallback           ,
+    AttrClassDestroyFieldCallbackC          ,
+    attrClassDestroyFieldCallbackClosure    ,
+    attrClassDestroyFieldCallbackWrapper    ,
+    mkAttrClassDestroyFieldCallback         ,
+    noAttrClassDestroyFieldCallback         ,
+
+
+-- ** AttrClassEqualFieldCallback
+    AttrClassEqualFieldCallback             ,
+    AttrClassEqualFieldCallbackC            ,
+    attrClassEqualFieldCallbackClosure      ,
+    attrClassEqualFieldCallbackWrapper      ,
+    mkAttrClassEqualFieldCallback           ,
+    noAttrClassEqualFieldCallback           ,
+
+
+-- ** AttrFilterFunc
+    AttrFilterFunc                          ,
+    AttrFilterFuncC                         ,
+    attrFilterFuncClosure                   ,
+    attrFilterFuncWrapper                   ,
+    mkAttrFilterFunc                        ,
+    noAttrFilterFunc                        ,
+
+
+-- ** FontsetForeachFunc
+    FontsetForeachFunc                      ,
+    FontsetForeachFuncC                     ,
+    fontsetForeachFuncClosure               ,
+    fontsetForeachFuncWrapper               ,
+    mkFontsetForeachFunc                    ,
+    noFontsetForeachFunc                    ,
+
+
+-- ** IncludedModuleExitFieldCallback
+    IncludedModuleExitFieldCallback         ,
+    IncludedModuleExitFieldCallbackC        ,
+    includedModuleExitFieldCallbackClosure  ,
+    includedModuleExitFieldCallbackWrapper  ,
+    mkIncludedModuleExitFieldCallback       ,
+    noIncludedModuleExitFieldCallback       ,
+
+
+-- ** IncludedModuleInitFieldCallback
+    IncludedModuleInitFieldCallback         ,
+    IncludedModuleInitFieldCallbackC        ,
+    includedModuleInitFieldCallbackClosure  ,
+    includedModuleInitFieldCallbackWrapper  ,
+    mkIncludedModuleInitFieldCallback       ,
+    noIncludedModuleInitFieldCallback       ,
+
+
+-- ** IncludedModuleListFieldCallback
+    IncludedModuleListFieldCallback         ,
+    IncludedModuleListFieldCallbackC        ,
+    includedModuleListFieldCallbackClosure  ,
+    includedModuleListFieldCallbackWrapper  ,
+    mkIncludedModuleListFieldCallback       ,
+    noIncludedModuleListFieldCallback       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+
+import qualified GI.GObject as GObject
+
+-- 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
+
+-- 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'
+
+-- 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'
+
+-- 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 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
+
+
diff --git a/GI/Pango/Constants.hs b/GI/Pango/Constants.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Constants.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, ViewPatterns #-}
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Constants
+    ( 
+    pattern UNKNOWN_GLYPH_WIDTH             ,
+    pattern UNKNOWN_GLYPH_HEIGHT            ,
+    pattern SCALE                           ,
+    pattern RENDER_TYPE_NONE                ,
+    pattern GLYPH_UNKNOWN_FLAG              ,
+    pattern GLYPH_INVALID_INPUT             ,
+    pattern GLYPH_EMPTY                     ,
+    pattern ENGINE_TYPE_SHAPE               ,
+    pattern ENGINE_TYPE_LANG                ,
+    pattern ATTR_INDEX_FROM_TEXT_BEGINNING  ,
+    pattern ANALYSIS_FLAG_IS_ELLIPSIS       ,
+    pattern ANALYSIS_FLAG_CENTERED_BASELINE ,
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+
+pattern UNKNOWN_GLYPH_WIDTH = 10 :: Int32
+
+
+pattern UNKNOWN_GLYPH_HEIGHT = 14 :: Int32
+
+
+pattern SCALE = 1024 :: Int32
+
+
+pattern RENDER_TYPE_NONE = "PangoRenderNone" :: T.Text
+
+
+pattern GLYPH_UNKNOWN_FLAG = 268435456 :: Word32
+
+
+pattern GLYPH_INVALID_INPUT = 4294967295 :: Word32
+
+
+pattern GLYPH_EMPTY = 268435455 :: Word32
+
+
+pattern ENGINE_TYPE_SHAPE = "PangoEngineShape" :: T.Text
+
+
+pattern ENGINE_TYPE_LANG = "PangoEngineLang" :: T.Text
+
+
+pattern ATTR_INDEX_FROM_TEXT_BEGINNING = 0 :: Int32
+
+
+pattern ANALYSIS_FLAG_IS_ELLIPSIS = 2 :: Int32
+
+
+pattern ANALYSIS_FLAG_CENTERED_BASELINE = 1 :: Int32
+
+
diff --git a/GI/Pango/Enums.hs b/GI/Pango/Enums.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Enums.hs
@@ -0,0 +1,920 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Enums
+    ( 
+
+-- * Exported types
+    WrapMode(..)                            ,
+    Weight(..)                              ,
+    Variant(..)                             ,
+    Underline(..)                           ,
+    TabAlign(..)                            ,
+    Style(..)                               ,
+    Stretch(..)                             ,
+    Script(..)                              ,
+    RenderPart(..)                          ,
+    GravityHint(..)                         ,
+    Gravity(..)                             ,
+    EllipsizeMode(..)                       ,
+    Direction(..)                           ,
+    CoverageLevel(..)                       ,
+    BidiType(..)                            ,
+    AttrType(..)                            ,
+    Alignment(..)                           ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+
+
+
+-- 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
+
+-- 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 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 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 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
+
+-- 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 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 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
+
+-- 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
+
+-- 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
+
+-- 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 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
+
+-- 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 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 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
+
+-- 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
+
+-- 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
+
+
diff --git a/GI/Pango/Flags.hs b/GI/Pango/Flags.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Flags.hs
@@ -0,0 +1,67 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Flags
+    ( 
+
+-- * Exported types
+    FontMask(..)                            ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+
+
+
+-- 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
+
+
diff --git a/GI/Pango/Functions.hs b/GI/Pango/Functions.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Functions.hs
@@ -0,0 +1,1895 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Functions
+    ( 
+
+ -- * Methods
+-- ** attrTypeGetName
+    attrTypeGetName                         ,
+
+
+-- ** attrTypeRegister
+    attrTypeRegister                        ,
+
+
+-- ** bidiTypeForUnichar
+    bidiTypeForUnichar                      ,
+
+
+-- ** break
+    break                                   ,
+
+
+-- ** configKeyGet
+    configKeyGet                            ,
+
+
+-- ** configKeyGetSystem
+    configKeyGetSystem                      ,
+
+
+-- ** defaultBreak
+    defaultBreak                            ,
+
+
+-- ** extentsToPixels
+    extentsToPixels                         ,
+
+
+-- ** findBaseDir
+    findBaseDir                             ,
+
+
+-- ** findParagraphBoundary
+    findParagraphBoundary                   ,
+
+
+-- ** fontDescriptionFromString
+    fontDescriptionFromString               ,
+
+
+-- ** getLibSubdirectory
+    getLibSubdirectory                      ,
+
+
+-- ** getLogAttrs
+    getLogAttrs                             ,
+
+
+-- ** getMirrorChar
+    getMirrorChar                           ,
+
+
+-- ** getSysconfSubdirectory
+    getSysconfSubdirectory                  ,
+
+
+-- ** gravityGetForMatrix
+    gravityGetForMatrix                     ,
+
+
+-- ** gravityGetForScript
+    gravityGetForScript                     ,
+
+
+-- ** gravityGetForScriptAndWidth
+    gravityGetForScriptAndWidth             ,
+
+
+-- ** gravityToRotation
+    gravityToRotation                       ,
+
+
+-- ** isZeroWidth
+    isZeroWidth                             ,
+
+
+-- ** itemize
+    itemize                                 ,
+
+
+-- ** itemizeWithBaseDir
+    itemizeWithBaseDir                      ,
+
+
+-- ** languageFromString
+    languageFromString                      ,
+
+
+-- ** languageGetDefault
+    languageGetDefault                      ,
+
+
+-- ** log2visGetEmbeddingLevels
+    log2visGetEmbeddingLevels               ,
+
+
+-- ** lookupAliases
+    lookupAliases                           ,
+
+
+-- ** markupParserFinish
+    markupParserFinish                      ,
+
+
+-- ** markupParserNew
+    markupParserNew                         ,
+
+
+-- ** moduleRegister
+    moduleRegister                          ,
+
+
+-- ** parseEnum
+    parseEnum                               ,
+
+
+-- ** parseMarkup
+    parseMarkup                             ,
+
+
+-- ** parseStretch
+    parseStretch                            ,
+
+
+-- ** parseStyle
+    parseStyle                              ,
+
+
+-- ** parseVariant
+    parseVariant                            ,
+
+
+-- ** parseWeight
+    parseWeight                             ,
+
+
+-- ** quantizeLineGeometry
+    quantizeLineGeometry                    ,
+
+
+-- ** readLine
+    readLine                                ,
+
+
+-- ** reorderItems
+    reorderItems                            ,
+
+
+-- ** scanInt
+    scanInt                                 ,
+
+
+-- ** scanString
+    scanString                              ,
+
+
+-- ** scanWord
+    scanWord                                ,
+
+
+-- ** scriptForUnichar
+    scriptForUnichar                        ,
+
+
+-- ** scriptGetSampleLanguage
+    scriptGetSampleLanguage                 ,
+
+
+-- ** shape
+    shape                                   ,
+
+
+-- ** shapeFull
+    shapeFull                               ,
+
+
+-- ** skipSpace
+    skipSpace                               ,
+
+
+-- ** splitFileList
+    splitFileList                           ,
+
+
+-- ** trimString
+    trimString                              ,
+
+
+-- ** unicharDirection
+    unicharDirection                        ,
+
+
+-- ** unitsFromDouble
+    unitsFromDouble                         ,
+
+
+-- ** unitsToDouble
+    unitsToDouble                           ,
+
+
+-- ** version
+    version                                 ,
+
+
+-- ** versionCheck
+    versionCheck                            ,
+
+
+-- ** versionString
+    versionString                           ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GLib as GLib
+
+-- 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
+    checkUnexpectedReturnNULL "pango_version_string" result
+    result' <- cstringToText result
+    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
+    checkUnexpectedReturnNULL "pango_version_check" result
+    result' <- cstringToText 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_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_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_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_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'
+    checkUnexpectedReturnNULL "pango_trim_string" result
+    result' <- cstringToText result
+    freeMem result
+    freeMem str'
+    return result'
+
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_split_file_list" result
+    result' <- unpackZeroTerminatedUTF8CArray result
+    mapZeroTerminatedCArray freeMem result
+    freeMem result
+    freeMem str'
+    return result'
+
+
+-- 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_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_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_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'
+    checkUnexpectedReturnNULL "pango_script_get_sample_language" result
+    result' <- (wrapBoxed Language) result
+    return result'
+
+
+-- 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_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_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_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_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''
+    checkUnexpectedReturnNULL "pango_reorder_items" result
+    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_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_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_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_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_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_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_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_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_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_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'
+    checkUnexpectedReturnNULL "pango_markup_parser_new" result
+    result' <- (newBoxed GLib.MarkupParseContext) result
+    return result'
+
+
+-- 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_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_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_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
+    checkUnexpectedReturnNULL "pango_language_get_default" result
+    result' <- (newBoxed Language) result
+    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
+    checkUnexpectedReturnNULL "pango_language_from_string" result
+    result' <- (newBoxed Language) result
+    freeMem maybeLanguage
+    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
+    checkUnexpectedReturnNULL "pango_itemize_with_base_dir" result
+    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
+-- 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
+    checkUnexpectedReturnNULL "pango_itemize" result
+    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_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_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_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_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_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_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
+    checkUnexpectedReturnNULL "pango_get_sysconf_subdirectory" result
+    result' <- cstringToText result
+    return result'
+
+
+-- 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_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_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
+    checkUnexpectedReturnNULL "pango_get_lib_subdirectory" result
+    result' <- cstringToText result
+    return result'
+
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_font_description_from_string" result
+    result' <- (wrapBoxed FontDescription) result
+    freeMem str'
+    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_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_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_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_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'
+    checkUnexpectedReturnNULL "pango_config_key_get_system" result
+    result' <- cstringToText result
+    freeMem result
+    freeMem key'
+    return result'
+
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_config_key_get" result
+    result' <- cstringToText result
+    freeMem result
+    freeMem key'
+    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_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_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_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_'
+    checkUnexpectedReturnNULL "pango_attr_type_get_name" result
+    result' <- cstringToText result
+    return result'
+
+
+
diff --git a/GI/Pango/Objects.hs b/GI/Pango/Objects.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects.hs
@@ -0,0 +1,48 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects
+    (     module GI.Pango.Objects.Context         ,
+    module GI.Pango.Objects.Engine          ,
+    module GI.Pango.Objects.EngineLang      ,
+    module GI.Pango.Objects.EngineShape     ,
+    module GI.Pango.Objects.Font            ,
+    module GI.Pango.Objects.FontFace        ,
+    module GI.Pango.Objects.FontFamily      ,
+    module GI.Pango.Objects.FontMap         ,
+    module GI.Pango.Objects.Fontset         ,
+    module GI.Pango.Objects.FontsetSimple   ,
+    module GI.Pango.Objects.Layout          ,
+    module GI.Pango.Objects.Renderer        ,
+
+
+    ) where
+
+import GI.Pango.Objects.Context
+import GI.Pango.Objects.Engine
+import GI.Pango.Objects.EngineLang
+import GI.Pango.Objects.EngineShape
+import GI.Pango.Objects.Font
+import GI.Pango.Objects.FontFace
+import GI.Pango.Objects.FontFamily
+import GI.Pango.Objects.FontMap
+import GI.Pango.Objects.Fontset
+import GI.Pango.Objects.FontsetSimple
+import GI.Pango.Objects.Layout
+import GI.Pango.Objects.Renderer
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+
diff --git a/GI/Pango/Objects/Context.hs b/GI/Pango/Objects/Context.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Context.hs
@@ -0,0 +1,761 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Context
+    ( 
+
+-- * Exported types
+    Context(..)                             ,
+    ContextK                                ,
+    toContext                               ,
+    noContext                               ,
+
+
+ -- * Methods
+-- ** contextChanged
+    contextChanged                          ,
+
+
+-- ** contextGetBaseDir
+    contextGetBaseDir                       ,
+
+
+-- ** contextGetBaseGravity
+    contextGetBaseGravity                   ,
+
+
+-- ** contextGetFontDescription
+    contextGetFontDescription               ,
+
+
+-- ** contextGetFontMap
+    contextGetFontMap                       ,
+
+
+-- ** contextGetGravity
+    contextGetGravity                       ,
+
+
+-- ** contextGetGravityHint
+    contextGetGravityHint                   ,
+
+
+-- ** contextGetLanguage
+    contextGetLanguage                      ,
+
+
+-- ** contextGetMatrix
+    contextGetMatrix                        ,
+
+
+-- ** contextGetMetrics
+    contextGetMetrics                       ,
+
+
+-- ** contextGetSerial
+    contextGetSerial                        ,
+
+
+-- ** contextListFamilies
+    contextListFamilies                     ,
+
+
+-- ** contextLoadFont
+    contextLoadFont                         ,
+
+
+-- ** contextLoadFontset
+    contextLoadFontset                      ,
+
+
+-- ** contextNew
+    contextNew                              ,
+
+
+-- ** contextSetBaseDir
+    contextSetBaseDir                       ,
+
+
+-- ** contextSetBaseGravity
+    contextSetBaseGravity                   ,
+
+
+-- ** contextSetFontDescription
+    contextSetFontDescription               ,
+
+
+-- ** contextSetFontMap
+    contextSetFontMap                       ,
+
+
+-- ** contextSetGravityHint
+    contextSetGravityHint                   ,
+
+
+-- ** contextSetLanguage
+    contextSetLanguage                      ,
+
+
+-- ** contextSetMatrix
+    contextSetMatrix                        ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Context = Context (ForeignPtr Context)
+foreign import ccall "pango_context_get_type"
+    c_pango_context_get_type :: IO GType
+
+type instance ParentTypes Context = ContextParentTypes
+type ContextParentTypes = '[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
+
+noContext :: Maybe Context
+noContext = Nothing
+
+type instance AttributeList Context = ContextAttributeList
+type ContextAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Context = ContextSignalList
+type ContextSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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
+    checkUnexpectedReturnNULL "pango_context_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_get_font_description" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_get_font_map" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_get_language" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_get_matrix" result
+    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
+    checkUnexpectedReturnNULL "pango_context_get_metrics" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_load_font" result
+    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'
+    checkUnexpectedReturnNULL "pango_context_load_fontset" result
+    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 ()
+
+
diff --git a/GI/Pango/Objects/Context.hs-boot b/GI/Pango/Objects/Context.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Context.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Context where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Context = Context (ForeignPtr Context)
+instance GObject Context where
+class GObject o => ContextK o
+instance (GObject o, IsDescendantOf Context o) => ContextK o
diff --git a/GI/Pango/Objects/Engine.hs b/GI/Pango/Objects/Engine.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Engine.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Engine
+    ( 
+
+-- * Exported types
+    Engine(..)                              ,
+    EngineK                                 ,
+    toEngine                                ,
+    noEngine                                ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Engine = Engine (ForeignPtr Engine)
+foreign import ccall "pango_engine_get_type"
+    c_pango_engine_get_type :: IO GType
+
+type instance ParentTypes Engine = EngineParentTypes
+type EngineParentTypes = '[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
+
+noEngine :: Maybe Engine
+noEngine = Nothing
+
+type instance AttributeList Engine = EngineAttributeList
+type EngineAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Engine = EngineSignalList
+type EngineSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+
diff --git a/GI/Pango/Objects/Engine.hs-boot b/GI/Pango/Objects/Engine.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Engine.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Engine where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Engine = Engine (ForeignPtr Engine)
+instance GObject Engine where
+class GObject o => EngineK o
+instance (GObject o, IsDescendantOf Engine o) => EngineK o
diff --git a/GI/Pango/Objects/EngineLang.hs b/GI/Pango/Objects/EngineLang.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/EngineLang.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.EngineLang
+    ( 
+
+-- * Exported types
+    EngineLang(..)                          ,
+    EngineLangK                             ,
+    toEngineLang                            ,
+    noEngineLang                            ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype EngineLang = EngineLang (ForeignPtr EngineLang)
+foreign import ccall "pango_engine_lang_get_type"
+    c_pango_engine_lang_get_type :: IO GType
+
+type instance ParentTypes EngineLang = EngineLangParentTypes
+type EngineLangParentTypes = '[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
+
+noEngineLang :: Maybe EngineLang
+noEngineLang = Nothing
+
+type instance AttributeList EngineLang = EngineLangAttributeList
+type EngineLangAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList EngineLang = EngineLangSignalList
+type EngineLangSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+
diff --git a/GI/Pango/Objects/EngineLang.hs-boot b/GI/Pango/Objects/EngineLang.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/EngineLang.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.EngineLang where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype EngineLang = EngineLang (ForeignPtr EngineLang)
+instance GObject EngineLang where
+class GObject o => EngineLangK o
+instance (GObject o, IsDescendantOf EngineLang o) => EngineLangK o
diff --git a/GI/Pango/Objects/EngineShape.hs b/GI/Pango/Objects/EngineShape.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/EngineShape.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.EngineShape
+    ( 
+
+-- * Exported types
+    EngineShape(..)                         ,
+    EngineShapeK                            ,
+    toEngineShape                           ,
+    noEngineShape                           ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype EngineShape = EngineShape (ForeignPtr EngineShape)
+foreign import ccall "pango_engine_shape_get_type"
+    c_pango_engine_shape_get_type :: IO GType
+
+type instance ParentTypes EngineShape = EngineShapeParentTypes
+type EngineShapeParentTypes = '[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
+
+noEngineShape :: Maybe EngineShape
+noEngineShape = Nothing
+
+type instance AttributeList EngineShape = EngineShapeAttributeList
+type EngineShapeAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList EngineShape = EngineShapeSignalList
+type EngineShapeSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+
diff --git a/GI/Pango/Objects/EngineShape.hs-boot b/GI/Pango/Objects/EngineShape.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/EngineShape.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.EngineShape where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype EngineShape = EngineShape (ForeignPtr EngineShape)
+instance GObject EngineShape where
+class GObject o => EngineShapeK o
+instance (GObject o, IsDescendantOf EngineShape o) => EngineShapeK o
diff --git a/GI/Pango/Objects/Font.hs b/GI/Pango/Objects/Font.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Font.hs
@@ -0,0 +1,262 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Font
+    ( 
+
+-- * Exported types
+    Font(..)                                ,
+    FontK                                   ,
+    toFont                                  ,
+    noFont                                  ,
+
+
+ -- * Methods
+-- ** fontDescribe
+    fontDescribe                            ,
+
+
+-- ** fontDescribeWithAbsoluteSize
+    fontDescribeWithAbsoluteSize            ,
+
+
+-- ** fontDescriptionsFree
+    fontDescriptionsFree                    ,
+
+
+-- ** fontGetFontMap
+    fontGetFontMap                          ,
+
+
+-- ** fontGetGlyphExtents
+    fontGetGlyphExtents                     ,
+
+
+-- ** fontGetMetrics
+    fontGetMetrics                          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Font = Font (ForeignPtr Font)
+foreign import ccall "pango_font_get_type"
+    c_pango_font_get_type :: IO GType
+
+type instance ParentTypes Font = FontParentTypes
+type FontParentTypes = '[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
+
+noFont :: Maybe Font
+noFont = Nothing
+
+type instance AttributeList Font = FontAttributeList
+type FontAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Font = FontSignalList
+type FontSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_font_describe" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_describe_with_absolute_size" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_get_font_map" result
+    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
+    checkUnexpectedReturnNULL "pango_font_get_metrics" result
+    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 ()
+
+
diff --git a/GI/Pango/Objects/Font.hs-boot b/GI/Pango/Objects/Font.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Font.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Font where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Font = Font (ForeignPtr Font)
+instance GObject Font where
+class GObject o => FontK o
+instance (GObject o, IsDescendantOf Font o) => FontK o
diff --git a/GI/Pango/Objects/FontFace.hs b/GI/Pango/Objects/FontFace.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontFace.hs
@@ -0,0 +1,188 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.FontFace
+    ( 
+
+-- * Exported types
+    FontFace(..)                            ,
+    FontFaceK                               ,
+    toFontFace                              ,
+    noFontFace                              ,
+
+
+ -- * Methods
+-- ** fontFaceDescribe
+    fontFaceDescribe                        ,
+
+
+-- ** fontFaceGetFaceName
+    fontFaceGetFaceName                     ,
+
+
+-- ** fontFaceIsSynthesized
+    fontFaceIsSynthesized                   ,
+
+
+-- ** fontFaceListSizes
+    fontFaceListSizes                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype FontFace = FontFace (ForeignPtr FontFace)
+foreign import ccall "pango_font_face_get_type"
+    c_pango_font_face_get_type :: IO GType
+
+type instance ParentTypes FontFace = FontFaceParentTypes
+type FontFaceParentTypes = '[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
+
+noFontFace :: Maybe FontFace
+noFontFace = Nothing
+
+type instance AttributeList FontFace = FontFaceAttributeList
+type FontFaceAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList FontFace = FontFaceSignalList
+type FontFaceSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_font_face_describe" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_face_get_face_name" result
+    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''
+
+
diff --git a/GI/Pango/Objects/FontFace.hs-boot b/GI/Pango/Objects/FontFace.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontFace.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.FontFace where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontFace = FontFace (ForeignPtr FontFace)
+instance GObject FontFace where
+class GObject o => FontFaceK o
+instance (GObject o, IsDescendantOf FontFace o) => FontFaceK o
diff --git a/GI/Pango/Objects/FontFamily.hs b/GI/Pango/Objects/FontFamily.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontFamily.hs
@@ -0,0 +1,159 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.FontFamily
+    ( 
+
+-- * Exported types
+    FontFamily(..)                          ,
+    FontFamilyK                             ,
+    toFontFamily                            ,
+    noFontFamily                            ,
+
+
+ -- * Methods
+-- ** fontFamilyGetName
+    fontFamilyGetName                       ,
+
+
+-- ** fontFamilyIsMonospace
+    fontFamilyIsMonospace                   ,
+
+
+-- ** fontFamilyListFaces
+    fontFamilyListFaces                     ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype FontFamily = FontFamily (ForeignPtr FontFamily)
+foreign import ccall "pango_font_family_get_type"
+    c_pango_font_family_get_type :: IO GType
+
+type instance ParentTypes FontFamily = FontFamilyParentTypes
+type FontFamilyParentTypes = '[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
+
+noFontFamily :: Maybe FontFamily
+noFontFamily = Nothing
+
+type instance AttributeList FontFamily = FontFamilyAttributeList
+type FontFamilyAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList FontFamily = FontFamilySignalList
+type FontFamilySignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_font_family_get_name" result
+    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'''
+
+
diff --git a/GI/Pango/Objects/FontFamily.hs-boot b/GI/Pango/Objects/FontFamily.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontFamily.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.FontFamily where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontFamily = FontFamily (ForeignPtr FontFamily)
+instance GObject FontFamily where
+class GObject o => FontFamilyK o
+instance (GObject o, IsDescendantOf FontFamily o) => FontFamilyK o
diff --git a/GI/Pango/Objects/FontMap.hs b/GI/Pango/Objects/FontMap.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontMap.hs
@@ -0,0 +1,296 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.FontMap
+    ( 
+
+-- * Exported types
+    FontMap(..)                             ,
+    FontMapK                                ,
+    toFontMap                               ,
+    noFontMap                               ,
+
+
+ -- * Methods
+-- ** fontMapChanged
+    fontMapChanged                          ,
+
+
+-- ** fontMapCreateContext
+    fontMapCreateContext                    ,
+
+
+-- ** fontMapGetSerial
+    fontMapGetSerial                        ,
+
+
+-- ** fontMapGetShapeEngineType
+    fontMapGetShapeEngineType               ,
+
+
+-- ** fontMapListFamilies
+    fontMapListFamilies                     ,
+
+
+-- ** fontMapLoadFont
+    fontMapLoadFont                         ,
+
+
+-- ** fontMapLoadFontset
+    fontMapLoadFontset                      ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype FontMap = FontMap (ForeignPtr FontMap)
+foreign import ccall "pango_font_map_get_type"
+    c_pango_font_map_get_type :: IO GType
+
+type instance ParentTypes FontMap = FontMapParentTypes
+type FontMapParentTypes = '[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
+
+noFontMap :: Maybe FontMap
+noFontMap = Nothing
+
+type instance AttributeList FontMap = FontMapAttributeList
+type FontMapAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList FontMap = FontMapSignalList
+type FontMapSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_font_map_create_context" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_map_get_shape_engine_type" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_map_load_font" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_map_load_fontset" result
+    result' <- (wrapObject Fontset) result
+    touchManagedPtr _obj
+    touchManagedPtr context
+    touchManagedPtr desc
+    touchManagedPtr language
+    return result'
+
+
diff --git a/GI/Pango/Objects/FontMap.hs-boot b/GI/Pango/Objects/FontMap.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontMap.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.FontMap where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontMap = FontMap (ForeignPtr FontMap)
+instance GObject FontMap where
+class GObject o => FontMapK o
+instance (GObject o, IsDescendantOf FontMap o) => FontMapK o
diff --git a/GI/Pango/Objects/Fontset.hs b/GI/Pango/Objects/Fontset.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Fontset.hs
@@ -0,0 +1,157 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Fontset
+    ( 
+
+-- * Exported types
+    Fontset(..)                             ,
+    FontsetK                                ,
+    toFontset                               ,
+    noFontset                               ,
+
+
+ -- * Methods
+-- ** fontsetForeach
+    fontsetForeach                          ,
+
+
+-- ** fontsetGetFont
+    fontsetGetFont                          ,
+
+
+-- ** fontsetGetMetrics
+    fontsetGetMetrics                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Fontset = Fontset (ForeignPtr Fontset)
+foreign import ccall "pango_fontset_get_type"
+    c_pango_fontset_get_type :: IO GType
+
+type instance ParentTypes Fontset = FontsetParentTypes
+type FontsetParentTypes = '[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
+
+noFontset :: Maybe Fontset
+noFontset = Nothing
+
+type instance AttributeList Fontset = FontsetAttributeList
+type FontsetAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Fontset = FontsetSignalList
+type FontsetSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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
+    checkUnexpectedReturnNULL "pango_fontset_get_font" result
+    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'
+    checkUnexpectedReturnNULL "pango_fontset_get_metrics" result
+    result' <- (wrapBoxed FontMetrics) result
+    touchManagedPtr _obj
+    return result'
+
+
diff --git a/GI/Pango/Objects/Fontset.hs-boot b/GI/Pango/Objects/Fontset.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Fontset.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Fontset where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Fontset = Fontset (ForeignPtr Fontset)
+instance GObject Fontset where
+class GObject o => FontsetK o
+instance (GObject o, IsDescendantOf Fontset o) => FontsetK o
diff --git a/GI/Pango/Objects/FontsetSimple.hs b/GI/Pango/Objects/FontsetSimple.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontsetSimple.hs
@@ -0,0 +1,151 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.FontsetSimple
+    ( 
+
+-- * Exported types
+    FontsetSimple(..)                       ,
+    FontsetSimpleK                          ,
+    toFontsetSimple                         ,
+    noFontsetSimple                         ,
+
+
+ -- * Methods
+-- ** fontsetSimpleAppend
+    fontsetSimpleAppend                     ,
+
+
+-- ** fontsetSimpleNew
+    fontsetSimpleNew                        ,
+
+
+-- ** fontsetSimpleSize
+    fontsetSimpleSize                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype FontsetSimple = FontsetSimple (ForeignPtr FontsetSimple)
+foreign import ccall "pango_fontset_simple_get_type"
+    c_pango_fontset_simple_get_type :: IO GType
+
+type instance ParentTypes FontsetSimple = FontsetSimpleParentTypes
+type FontsetSimpleParentTypes = '[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
+
+noFontsetSimple :: Maybe FontsetSimple
+noFontsetSimple = Nothing
+
+type instance AttributeList FontsetSimple = FontsetSimpleAttributeList
+type FontsetSimpleAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList FontsetSimple = FontsetSimpleSignalList
+type FontsetSimpleSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_fontset_simple_new" result
+    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
+
+
diff --git a/GI/Pango/Objects/FontsetSimple.hs-boot b/GI/Pango/Objects/FontsetSimple.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/FontsetSimple.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.FontsetSimple where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontsetSimple = FontsetSimple (ForeignPtr FontsetSimple)
+instance GObject FontsetSimple where
+class GObject o => FontsetSimpleK o
+instance (GObject o, IsDescendantOf FontsetSimple o) => FontsetSimpleK o
diff --git a/GI/Pango/Objects/Layout.hs b/GI/Pango/Objects/Layout.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Layout.hs
@@ -0,0 +1,1873 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Layout
+    ( 
+
+-- * Exported types
+    Layout(..)                              ,
+    LayoutK                                 ,
+    toLayout                                ,
+    noLayout                                ,
+
+
+ -- * Methods
+-- ** layoutContextChanged
+    layoutContextChanged                    ,
+
+
+-- ** layoutCopy
+    layoutCopy                              ,
+
+
+-- ** layoutGetAlignment
+    layoutGetAlignment                      ,
+
+
+-- ** layoutGetAttributes
+    layoutGetAttributes                     ,
+
+
+-- ** layoutGetAutoDir
+    layoutGetAutoDir                        ,
+
+
+-- ** layoutGetBaseline
+    layoutGetBaseline                       ,
+
+
+-- ** layoutGetCharacterCount
+    layoutGetCharacterCount                 ,
+
+
+-- ** layoutGetContext
+    layoutGetContext                        ,
+
+
+-- ** layoutGetCursorPos
+    layoutGetCursorPos                      ,
+
+
+-- ** layoutGetEllipsize
+    layoutGetEllipsize                      ,
+
+
+-- ** layoutGetExtents
+    layoutGetExtents                        ,
+
+
+-- ** layoutGetFontDescription
+    layoutGetFontDescription                ,
+
+
+-- ** layoutGetHeight
+    layoutGetHeight                         ,
+
+
+-- ** layoutGetIndent
+    layoutGetIndent                         ,
+
+
+-- ** layoutGetIter
+    layoutGetIter                           ,
+
+
+-- ** layoutGetJustify
+    layoutGetJustify                        ,
+
+
+-- ** layoutGetLine
+    layoutGetLine                           ,
+
+
+-- ** layoutGetLineCount
+    layoutGetLineCount                      ,
+
+
+-- ** layoutGetLineReadonly
+    layoutGetLineReadonly                   ,
+
+
+-- ** layoutGetLines
+    layoutGetLines                          ,
+
+
+-- ** layoutGetLinesReadonly
+    layoutGetLinesReadonly                  ,
+
+
+-- ** layoutGetLogAttrs
+    layoutGetLogAttrs                       ,
+
+
+-- ** layoutGetLogAttrsReadonly
+    layoutGetLogAttrsReadonly               ,
+
+
+-- ** layoutGetPixelExtents
+    layoutGetPixelExtents                   ,
+
+
+-- ** layoutGetPixelSize
+    layoutGetPixelSize                      ,
+
+
+-- ** layoutGetSerial
+    layoutGetSerial                         ,
+
+
+-- ** layoutGetSingleParagraphMode
+    layoutGetSingleParagraphMode            ,
+
+
+-- ** layoutGetSize
+    layoutGetSize                           ,
+
+
+-- ** layoutGetSpacing
+    layoutGetSpacing                        ,
+
+
+-- ** layoutGetTabs
+    layoutGetTabs                           ,
+
+
+-- ** layoutGetText
+    layoutGetText                           ,
+
+
+-- ** layoutGetUnknownGlyphsCount
+    layoutGetUnknownGlyphsCount             ,
+
+
+-- ** layoutGetWidth
+    layoutGetWidth                          ,
+
+
+-- ** layoutGetWrap
+    layoutGetWrap                           ,
+
+
+-- ** layoutIndexToLineX
+    layoutIndexToLineX                      ,
+
+
+-- ** layoutIndexToPos
+    layoutIndexToPos                        ,
+
+
+-- ** layoutIsEllipsized
+    layoutIsEllipsized                      ,
+
+
+-- ** layoutIsWrapped
+    layoutIsWrapped                         ,
+
+
+-- ** layoutMoveCursorVisually
+    layoutMoveCursorVisually                ,
+
+
+-- ** layoutNew
+    layoutNew                               ,
+
+
+-- ** layoutSetAlignment
+    layoutSetAlignment                      ,
+
+
+-- ** layoutSetAttributes
+    layoutSetAttributes                     ,
+
+
+-- ** layoutSetAutoDir
+    layoutSetAutoDir                        ,
+
+
+-- ** layoutSetEllipsize
+    layoutSetEllipsize                      ,
+
+
+-- ** layoutSetFontDescription
+    layoutSetFontDescription                ,
+
+
+-- ** layoutSetHeight
+    layoutSetHeight                         ,
+
+
+-- ** layoutSetIndent
+    layoutSetIndent                         ,
+
+
+-- ** layoutSetJustify
+    layoutSetJustify                        ,
+
+
+-- ** layoutSetMarkup
+    layoutSetMarkup                         ,
+
+
+-- ** layoutSetMarkupWithAccel
+    layoutSetMarkupWithAccel                ,
+
+
+-- ** layoutSetSingleParagraphMode
+    layoutSetSingleParagraphMode            ,
+
+
+-- ** layoutSetSpacing
+    layoutSetSpacing                        ,
+
+
+-- ** layoutSetTabs
+    layoutSetTabs                           ,
+
+
+-- ** layoutSetText
+    layoutSetText                           ,
+
+
+-- ** layoutSetWidth
+    layoutSetWidth                          ,
+
+
+-- ** layoutSetWrap
+    layoutSetWrap                           ,
+
+
+-- ** layoutXyToIndex
+    layoutXyToIndex                         ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Layout = Layout (ForeignPtr Layout)
+foreign import ccall "pango_layout_get_type"
+    c_pango_layout_get_type :: IO GType
+
+type instance ParentTypes Layout = LayoutParentTypes
+type LayoutParentTypes = '[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
+
+noLayout :: Maybe Layout
+noLayout = Nothing
+
+type instance AttributeList Layout = LayoutAttributeList
+type LayoutAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Layout = LayoutSignalList
+type LayoutSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_layout_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_copy" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_attributes" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_context" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_font_description" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_iter" result
+    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
+    checkUnexpectedReturnNULL "pango_layout_get_line" result
+    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
+    checkUnexpectedReturnNULL "pango_layout_get_line_readonly" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_lines" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_lines_readonly" result
+    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
+    checkUnexpectedReturnNULL "pango_layout_get_log_attrs_readonly" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_tabs" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_get_text" result
+    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')
+
+
diff --git a/GI/Pango/Objects/Layout.hs-boot b/GI/Pango/Objects/Layout.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Layout.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Layout where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Layout = Layout (ForeignPtr Layout)
+instance GObject Layout where
+class GObject o => LayoutK o
+instance (GObject o, IsDescendantOf Layout o) => LayoutK o
diff --git a/GI/Pango/Objects/Renderer.hs b/GI/Pango/Objects/Renderer.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Renderer.hs
@@ -0,0 +1,666 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Objects.Renderer
+    ( 
+
+-- * Exported types
+    Renderer(..)                            ,
+    RendererK                               ,
+    toRenderer                              ,
+    noRenderer                              ,
+
+
+ -- * Methods
+-- ** rendererActivate
+    rendererActivate                        ,
+
+
+-- ** rendererDeactivate
+    rendererDeactivate                      ,
+
+
+-- ** rendererDrawErrorUnderline
+    rendererDrawErrorUnderline              ,
+
+
+-- ** rendererDrawGlyph
+    rendererDrawGlyph                       ,
+
+
+-- ** rendererDrawGlyphItem
+    rendererDrawGlyphItem                   ,
+
+
+-- ** rendererDrawGlyphs
+    rendererDrawGlyphs                      ,
+
+
+-- ** rendererDrawLayout
+    rendererDrawLayout                      ,
+
+
+-- ** rendererDrawLayoutLine
+    rendererDrawLayoutLine                  ,
+
+
+-- ** rendererDrawRectangle
+    rendererDrawRectangle                   ,
+
+
+-- ** rendererDrawTrapezoid
+    rendererDrawTrapezoid                   ,
+
+
+-- ** rendererGetColor
+    rendererGetColor                        ,
+
+
+-- ** rendererGetLayout
+    rendererGetLayout                       ,
+
+
+-- ** rendererGetLayoutLine
+    rendererGetLayoutLine                   ,
+
+
+-- ** rendererGetMatrix
+    rendererGetMatrix                       ,
+
+
+-- ** rendererPartChanged
+    rendererPartChanged                     ,
+
+
+-- ** rendererSetColor
+    rendererSetColor                        ,
+
+
+-- ** rendererSetMatrix
+    rendererSetMatrix                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Renderer = Renderer (ForeignPtr Renderer)
+foreign import ccall "pango_renderer_get_type"
+    c_pango_renderer_get_type :: IO GType
+
+type instance ParentTypes Renderer = RendererParentTypes
+type RendererParentTypes = '[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
+
+noRenderer :: Maybe Renderer
+noRenderer = Nothing
+
+type instance AttributeList Renderer = RendererAttributeList
+type RendererAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Renderer = RendererSignalList
+type RendererSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_renderer_get_color" result
+    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'
+    checkUnexpectedReturnNULL "pango_renderer_get_layout" result
+    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'
+    checkUnexpectedReturnNULL "pango_renderer_get_layout_line" result
+    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'
+    checkUnexpectedReturnNULL "pango_renderer_get_matrix" result
+    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 ()
+
+
diff --git a/GI/Pango/Objects/Renderer.hs-boot b/GI/Pango/Objects/Renderer.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Objects/Renderer.hs-boot
@@ -0,0 +1,13 @@
+module GI.Pango.Objects.Renderer where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Renderer = Renderer (ForeignPtr Renderer)
+instance GObject Renderer where
+class GObject o => RendererK o
+instance (GObject o, IsDescendantOf Renderer o) => RendererK o
diff --git a/GI/Pango/Structs.hs b/GI/Pango/Structs.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs.hs
@@ -0,0 +1,100 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Structs
+    (     module GI.Pango.Structs.Analysis        ,
+    module GI.Pango.Structs.AttrClass       ,
+    module GI.Pango.Structs.AttrColor       ,
+    module GI.Pango.Structs.AttrFloat       ,
+    module GI.Pango.Structs.AttrFontDesc    ,
+    module GI.Pango.Structs.AttrInt         ,
+    module GI.Pango.Structs.AttrIterator    ,
+    module GI.Pango.Structs.AttrLanguage    ,
+    module GI.Pango.Structs.AttrList        ,
+    module GI.Pango.Structs.AttrShape       ,
+    module GI.Pango.Structs.AttrSize        ,
+    module GI.Pango.Structs.AttrString      ,
+    module GI.Pango.Structs.Attribute       ,
+    module GI.Pango.Structs.Color           ,
+    module GI.Pango.Structs.Coverage        ,
+    module GI.Pango.Structs.EngineInfo      ,
+    module GI.Pango.Structs.EngineScriptInfo,
+    module GI.Pango.Structs.FontDescription ,
+    module GI.Pango.Structs.FontMetrics     ,
+    module GI.Pango.Structs.GlyphGeometry   ,
+    module GI.Pango.Structs.GlyphInfo       ,
+    module GI.Pango.Structs.GlyphItem       ,
+    module GI.Pango.Structs.GlyphItemIter   ,
+    module GI.Pango.Structs.GlyphString     ,
+    module GI.Pango.Structs.GlyphVisAttr    ,
+    module GI.Pango.Structs.IncludedModule  ,
+    module GI.Pango.Structs.Item            ,
+    module GI.Pango.Structs.Language        ,
+    module GI.Pango.Structs.LayoutIter      ,
+    module GI.Pango.Structs.LayoutLine      ,
+    module GI.Pango.Structs.LogAttr         ,
+    module GI.Pango.Structs.Map             ,
+    module GI.Pango.Structs.MapEntry        ,
+    module GI.Pango.Structs.Matrix          ,
+    module GI.Pango.Structs.Rectangle       ,
+    module GI.Pango.Structs.ScriptForLang   ,
+    module GI.Pango.Structs.ScriptIter      ,
+    module GI.Pango.Structs.TabArray        ,
+
+
+    ) where
+
+import GI.Pango.Structs.Analysis
+import GI.Pango.Structs.AttrClass
+import GI.Pango.Structs.AttrColor
+import GI.Pango.Structs.AttrFloat
+import GI.Pango.Structs.AttrFontDesc
+import GI.Pango.Structs.AttrInt
+import GI.Pango.Structs.AttrIterator
+import GI.Pango.Structs.AttrLanguage
+import GI.Pango.Structs.AttrList
+import GI.Pango.Structs.AttrShape
+import GI.Pango.Structs.AttrSize
+import GI.Pango.Structs.AttrString
+import GI.Pango.Structs.Attribute
+import GI.Pango.Structs.Color
+import GI.Pango.Structs.Coverage
+import GI.Pango.Structs.EngineInfo
+import GI.Pango.Structs.EngineScriptInfo
+import GI.Pango.Structs.FontDescription
+import GI.Pango.Structs.FontMetrics
+import GI.Pango.Structs.GlyphGeometry
+import GI.Pango.Structs.GlyphInfo
+import GI.Pango.Structs.GlyphItem
+import GI.Pango.Structs.GlyphItemIter
+import GI.Pango.Structs.GlyphString
+import GI.Pango.Structs.GlyphVisAttr
+import GI.Pango.Structs.IncludedModule
+import GI.Pango.Structs.Item
+import GI.Pango.Structs.Language
+import GI.Pango.Structs.LayoutIter
+import GI.Pango.Structs.LayoutLine
+import GI.Pango.Structs.LogAttr
+import GI.Pango.Structs.Map
+import GI.Pango.Structs.MapEntry
+import GI.Pango.Structs.Matrix
+import GI.Pango.Structs.Rectangle
+import GI.Pango.Structs.ScriptForLang
+import GI.Pango.Structs.ScriptIter
+import GI.Pango.Structs.TabArray
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+
diff --git a/GI/Pango/Structs/Analysis.hs b/GI/Pango/Structs/Analysis.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Analysis.hs
@@ -0,0 +1,124 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAnalysis structure stores information about
+the properties of a segment of text.
+-}
+
+module GI.Pango.Structs.Analysis
+    ( 
+
+-- * Exported types
+    Analysis(..)                            ,
+    noAnalysis                              ,
+
+
+ -- * Properties
+-- ** ExtraAttrs
+    analysisReadExtraAttrs                  ,
+
+
+-- ** Flags
+    analysisReadFlags                       ,
+
+
+-- ** Font
+    analysisReadFont                        ,
+
+
+-- ** Gravity
+    analysisReadGravity                     ,
+
+
+-- ** LangEngine
+    analysisReadLangEngine                  ,
+
+
+-- ** Language
+    analysisReadLanguage                    ,
+
+
+-- ** Level
+    analysisReadLevel                       ,
+
+
+-- ** Script
+    analysisReadScript                      ,
+
+
+-- ** ShapeEngine
+    analysisReadShapeEngine                 ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/Analysis.hs-boot b/GI/Pango/Structs/Analysis.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Analysis.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.Analysis where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Analysis = Analysis (ForeignPtr Analysis)
diff --git a/GI/Pango/Structs/AttrClass.hs b/GI/Pango/Structs/AttrClass.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrClass.hs
@@ -0,0 +1,54 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrClass structure stores the type and operations for
+a particular type of attribute. The functions in this structure should
+not be called directly. Instead, one should use the wrapper functions
+provided for #PangoAttribute.
+-}
+
+module GI.Pango.Structs.AttrClass
+    ( 
+
+-- * Exported types
+    AttrClass(..)                           ,
+    noAttrClass                             ,
+
+
+ -- * Properties
+-- ** Type
+    attrClassReadType                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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"
+
+
diff --git a/GI/Pango/Structs/AttrClass.hs-boot b/GI/Pango/Structs/AttrClass.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrClass.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrClass where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrClass = AttrClass (ForeignPtr AttrClass)
diff --git a/GI/Pango/Structs/AttrColor.hs b/GI/Pango/Structs/AttrColor.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrColor.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrColor structure is used to represent attributes that
+are colors.
+-}
+
+module GI.Pango.Structs.AttrColor
+    ( 
+
+-- * Exported types
+    AttrColor(..)                           ,
+    noAttrColor                             ,
+
+
+ -- * Properties
+-- ** Attr
+    attrColorReadAttr                       ,
+
+
+-- ** Color
+    attrColorReadColor                      ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/AttrColor.hs-boot b/GI/Pango/Structs/AttrColor.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrColor.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrColor where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrColor = AttrColor (ForeignPtr AttrColor)
diff --git a/GI/Pango/Structs/AttrFloat.hs b/GI/Pango/Structs/AttrFloat.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrFloat.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrFloat structure is used to represent attributes with
+a float or double value.
+-}
+
+module GI.Pango.Structs.AttrFloat
+    ( 
+
+-- * Exported types
+    AttrFloat(..)                           ,
+    noAttrFloat                             ,
+
+
+ -- * Properties
+-- ** Attr
+    attrFloatReadAttr                       ,
+
+
+-- ** Value
+    attrFloatReadValue                      ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/AttrFloat.hs-boot b/GI/Pango/Structs/AttrFloat.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrFloat.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrFloat where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrFloat = AttrFloat (ForeignPtr AttrFloat)
diff --git a/GI/Pango/Structs/AttrFontDesc.hs b/GI/Pango/Structs/AttrFontDesc.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrFontDesc.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrFontDesc structure is used to store an attribute that
+sets all aspects of the font description at once.
+-}
+
+module GI.Pango.Structs.AttrFontDesc
+    ( 
+
+-- * Exported types
+    AttrFontDesc(..)                        ,
+    noAttrFontDesc                          ,
+
+
+ -- * Properties
+-- ** Attr
+    attrFontDescReadAttr                    ,
+
+
+-- ** Desc
+    attrFontDescReadDesc                    ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/AttrFontDesc.hs-boot b/GI/Pango/Structs/AttrFontDesc.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrFontDesc.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrFontDesc where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrFontDesc = AttrFontDesc (ForeignPtr AttrFontDesc)
diff --git a/GI/Pango/Structs/AttrInt.hs b/GI/Pango/Structs/AttrInt.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrInt.hs
@@ -0,0 +1,57 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrInt structure is used to represent attributes with
+an integer or enumeration value.
+-}
+
+module GI.Pango.Structs.AttrInt
+    ( 
+
+-- * Exported types
+    AttrInt(..)                             ,
+    noAttrInt                               ,
+
+
+ -- * Properties
+-- ** Attr
+    attrIntReadAttr                         ,
+
+
+-- ** Value
+    attrIntReadValue                        ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/AttrInt.hs-boot b/GI/Pango/Structs/AttrInt.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrInt.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrInt where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrInt = AttrInt (ForeignPtr AttrInt)
diff --git a/GI/Pango/Structs/AttrIterator.hs b/GI/Pango/Structs/AttrIterator.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrIterator.hs
@@ -0,0 +1,213 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrIterator structure is used to represent an
+iterator through a #PangoAttrList. A new iterator is created
+with pango_attr_list_get_iterator(). Once the iterator
+is created, it can be advanced through the style changes
+in the text using pango_attr_iterator_next(). At each
+style change, the range of the current style segment and the
+attributes currently in effect can be queried.
+-}
+
+module GI.Pango.Structs.AttrIterator
+    ( 
+
+-- * Exported types
+    AttrIterator(..)                        ,
+    noAttrIterator                          ,
+
+
+ -- * Methods
+-- ** attrIteratorDestroy
+    attrIteratorDestroy                     ,
+
+
+-- ** attrIteratorGetAttrs
+    attrIteratorGetAttrs                    ,
+
+
+-- ** attrIteratorGetFont
+    attrIteratorGetFont                     ,
+
+
+-- ** attrIteratorNext
+    attrIteratorNext                        ,
+
+
+-- ** attrIteratorRange
+    attrIteratorRange                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+    checkUnexpectedReturnNULL "pango_attr_iterator_get_attrs" result
+    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')
+
+
diff --git a/GI/Pango/Structs/AttrIterator.hs-boot b/GI/Pango/Structs/AttrIterator.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrIterator.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrIterator where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrIterator = AttrIterator (ForeignPtr AttrIterator)
diff --git a/GI/Pango/Structs/AttrLanguage.hs b/GI/Pango/Structs/AttrLanguage.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrLanguage.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrLanguage structure is used to represent attributes that
+are languages.
+-}
+
+module GI.Pango.Structs.AttrLanguage
+    ( 
+
+-- * Exported types
+    AttrLanguage(..)                        ,
+    noAttrLanguage                          ,
+
+
+ -- * Properties
+-- ** Attr
+    attrLanguageReadAttr                    ,
+
+
+-- ** Value
+    attrLanguageReadValue                   ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/AttrLanguage.hs-boot b/GI/Pango/Structs/AttrLanguage.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrLanguage.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrLanguage where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrLanguage = AttrLanguage (ForeignPtr AttrLanguage)
diff --git a/GI/Pango/Structs/AttrList.hs b/GI/Pango/Structs/AttrList.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrList.hs
@@ -0,0 +1,334 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrList structure represents a list of attributes
+that apply to a section of text. The attributes are, in general,
+allowed to overlap in an arbitrary fashion, however, if the
+attributes are manipulated only through pango_attr_list_change(),
+the overlap between properties will meet stricter criteria.
+
+Since the #PangoAttrList structure is stored as a linear list,
+it is not suitable for storing attributes for large amounts
+of text. In general, you should not use a single #PangoAttrList
+for more than one paragraph of text.
+-}
+
+module GI.Pango.Structs.AttrList
+    ( 
+
+-- * Exported types
+    AttrList(..)                            ,
+    noAttrList                              ,
+
+
+ -- * Methods
+-- ** attrListChange
+    attrListChange                          ,
+
+
+-- ** attrListCopy
+    attrListCopy                            ,
+
+
+-- ** attrListFilter
+    attrListFilter                          ,
+
+
+-- ** attrListInsert
+    attrListInsert                          ,
+
+
+-- ** attrListInsertBefore
+    attrListInsertBefore                    ,
+
+
+-- ** attrListNew
+    attrListNew                             ,
+
+
+-- ** attrListRef
+    attrListRef                             ,
+
+
+-- ** attrListSplice
+    attrListSplice                          ,
+
+
+-- ** attrListUnref
+    attrListUnref                           ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype AttrList = AttrList (ForeignPtr AttrList)
+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
+
+noAttrList :: Maybe AttrList
+noAttrList = Nothing
+
+-- 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
+    checkUnexpectedReturnNULL "pango_attr_list_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_attr_list_copy" result
+    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_
+    checkUnexpectedReturnNULL "pango_attr_list_filter" result
+    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'
+    checkUnexpectedReturnNULL "pango_attr_list_ref" result
+    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 ()
+
+
diff --git a/GI/Pango/Structs/AttrList.hs-boot b/GI/Pango/Structs/AttrList.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrList.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.AttrList where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrList = AttrList (ForeignPtr AttrList)
+instance BoxedObject AttrList where
diff --git a/GI/Pango/Structs/AttrShape.hs b/GI/Pango/Structs/AttrShape.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrShape.hs
@@ -0,0 +1,79 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrShape structure is used to represent attributes which
+impose shape restrictions.
+-}
+
+module GI.Pango.Structs.AttrShape
+    ( 
+
+-- * Exported types
+    AttrShape(..)                           ,
+    noAttrShape                             ,
+
+
+ -- * Properties
+-- ** Attr
+    attrShapeReadAttr                       ,
+
+
+-- ** Data
+    attrShapeReadData                       ,
+
+
+-- ** InkRect
+    attrShapeReadInkRect                    ,
+
+
+-- ** LogicalRect
+    attrShapeReadLogicalRect                ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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"
+
+
diff --git a/GI/Pango/Structs/AttrShape.hs-boot b/GI/Pango/Structs/AttrShape.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrShape.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrShape where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrShape = AttrShape (ForeignPtr AttrShape)
diff --git a/GI/Pango/Structs/AttrSize.hs b/GI/Pango/Structs/AttrSize.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrSize.hs
@@ -0,0 +1,66 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrSize structure is used to represent attributes which
+set font size.
+-}
+
+module GI.Pango.Structs.AttrSize
+    ( 
+
+-- * Exported types
+    AttrSize(..)                            ,
+    noAttrSize                              ,
+
+
+ -- * Properties
+-- ** Absolute
+    attrSizeReadAbsolute                    ,
+
+
+-- ** Attr
+    attrSizeReadAttr                        ,
+
+
+-- ** Size
+    attrSizeReadSize                        ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/AttrSize.hs-boot b/GI/Pango/Structs/AttrSize.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrSize.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrSize where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrSize = AttrSize (ForeignPtr AttrSize)
diff --git a/GI/Pango/Structs/AttrString.hs b/GI/Pango/Structs/AttrString.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrString.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttrString structure is used to represent attributes with
+a string value.
+-}
+
+module GI.Pango.Structs.AttrString
+    ( 
+
+-- * Exported types
+    AttrString(..)                          ,
+    noAttrString                            ,
+
+
+ -- * Properties
+-- ** Attr
+    attrStringReadAttr                      ,
+
+
+-- ** Value
+    attrStringReadValue                     ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/AttrString.hs-boot b/GI/Pango/Structs/AttrString.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/AttrString.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.AttrString where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype AttrString = AttrString (ForeignPtr AttrString)
diff --git a/GI/Pango/Structs/Attribute.hs b/GI/Pango/Structs/Attribute.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Attribute.hs
@@ -0,0 +1,166 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoAttribute structure represents the common portions of all
+attributes. Particular types of attributes include this structure
+as their initial portion. The common portion of the attribute holds
+the range to which the value in the type-specific part of the attribute
+applies and should be initialized using pango_attribute_init().
+By default an attribute will have an all-inclusive range of [0,%G_MAXUINT].
+-}
+
+module GI.Pango.Structs.Attribute
+    ( 
+
+-- * Exported types
+    Attribute(..)                           ,
+    noAttribute                             ,
+
+
+ -- * Methods
+-- ** attributeDestroy
+    attributeDestroy                        ,
+
+
+-- ** attributeEqual
+    attributeEqual                          ,
+
+
+-- ** attributeInit
+    attributeInit                           ,
+
+
+
+
+ -- * Properties
+-- ** EndIndex
+    attributeReadEndIndex                   ,
+
+
+-- ** Klass
+    attributeReadKlass                      ,
+
+
+-- ** StartIndex
+    attributeReadStartIndex                 ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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 ()
+
+
diff --git a/GI/Pango/Structs/Attribute.hs-boot b/GI/Pango/Structs/Attribute.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Attribute.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.Attribute where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Attribute = Attribute (ForeignPtr Attribute)
diff --git a/GI/Pango/Structs/Color.hs b/GI/Pango/Structs/Color.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Color.hs
@@ -0,0 +1,196 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoColor structure is used to
+represent a color in an uncalibrated RGB color-space.
+-}
+
+module GI.Pango.Structs.Color
+    ( 
+
+-- * Exported types
+    Color(..)                               ,
+    noColor                                 ,
+
+
+ -- * Methods
+-- ** colorCopy
+    colorCopy                               ,
+
+
+-- ** colorFree
+    colorFree                               ,
+
+
+-- ** colorParse
+    colorParse                              ,
+
+
+-- ** colorToString
+    colorToString                           ,
+
+
+
+
+ -- * Properties
+-- ** Blue
+    colorReadBlue                           ,
+
+
+-- ** Green
+    colorReadGreen                          ,
+
+
+-- ** Red
+    colorReadRed                            ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype Color = Color (ForeignPtr Color)
+foreign import ccall "pango_color_get_type" c_pango_color_get_type :: 
+    IO GType
+
+instance BoxedObject Color where
+    boxedType _ = c_pango_color_get_type
+
+noColor :: Maybe Color
+noColor = Nothing
+
+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'
+    checkUnexpectedReturnNULL "pango_color_copy" result
+    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'
+    checkUnexpectedReturnNULL "pango_color_to_string" result
+    result' <- cstringToText result
+    freeMem result
+    touchManagedPtr _obj
+    return result'
+
+
diff --git a/GI/Pango/Structs/Color.hs-boot b/GI/Pango/Structs/Color.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Color.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.Color where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Color = Color (ForeignPtr Color)
+instance BoxedObject Color where
diff --git a/GI/Pango/Structs/Coverage.hs b/GI/Pango/Structs/Coverage.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Coverage.hs
@@ -0,0 +1,200 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoCoverage structure represents a map from Unicode characters
+to #PangoCoverageLevel. It is an opaque structure with no public fields.
+-}
+
+module GI.Pango.Structs.Coverage
+    ( 
+
+-- * Exported types
+    Coverage(..)                            ,
+    noCoverage                              ,
+
+
+ -- * Methods
+-- ** coverageGet
+    coverageGet                             ,
+
+
+-- ** coverageMax
+    coverageMax                             ,
+
+
+-- ** coverageSet
+    coverageSet                             ,
+
+
+-- ** coverageToBytes
+    coverageToBytes                         ,
+
+
+-- ** coverageUnref
+    coverageUnref                           ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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 ()
+
+
diff --git a/GI/Pango/Structs/Coverage.hs-boot b/GI/Pango/Structs/Coverage.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Coverage.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.Coverage where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Coverage = Coverage (ForeignPtr Coverage)
diff --git a/GI/Pango/Structs/EngineInfo.hs b/GI/Pango/Structs/EngineInfo.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/EngineInfo.hs
@@ -0,0 +1,87 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoEngineInfo structure contains information about a particular
+engine. It contains the following fields:
+-}
+
+module GI.Pango.Structs.EngineInfo
+    ( 
+
+-- * Exported types
+    EngineInfo(..)                          ,
+    noEngineInfo                            ,
+
+
+ -- * Properties
+-- ** EngineType
+    engineInfoReadEngineType                ,
+
+
+-- ** Id
+    engineInfoReadId                        ,
+
+
+-- ** NScripts
+    engineInfoReadNScripts                  ,
+
+
+-- ** RenderType
+    engineInfoReadRenderType                ,
+
+
+-- ** Scripts
+    engineInfoReadScripts                   ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/EngineInfo.hs-boot b/GI/Pango/Structs/EngineInfo.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/EngineInfo.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.EngineInfo where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype EngineInfo = EngineInfo (ForeignPtr EngineInfo)
diff --git a/GI/Pango/Structs/EngineScriptInfo.hs b/GI/Pango/Structs/EngineScriptInfo.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/EngineScriptInfo.hs
@@ -0,0 +1,58 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoEngineScriptInfo structure contains
+information about how the shaper covers a particular script.
+-}
+
+module GI.Pango.Structs.EngineScriptInfo
+    ( 
+
+-- * Exported types
+    EngineScriptInfo(..)                    ,
+    noEngineScriptInfo                      ,
+
+
+ -- * Properties
+-- ** Langs
+    engineScriptInfoReadLangs               ,
+
+
+-- ** Script
+    engineScriptInfoReadScript              ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/EngineScriptInfo.hs-boot b/GI/Pango/Structs/EngineScriptInfo.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/EngineScriptInfo.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.EngineScriptInfo where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype EngineScriptInfo = EngineScriptInfo (ForeignPtr EngineScriptInfo)
diff --git a/GI/Pango/Structs/FontDescription.hs b/GI/Pango/Structs/FontDescription.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/FontDescription.hs
@@ -0,0 +1,970 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoFontDescription structure represents the description
+of an ideal font. These structures are used both to list
+what fonts are available on the system and also for specifying
+the characteristics of a font to load.
+-}
+
+module GI.Pango.Structs.FontDescription
+    ( 
+
+-- * Exported types
+    FontDescription(..)                     ,
+    noFontDescription                       ,
+
+
+ -- * Methods
+-- ** fontDescriptionBetterMatch
+    fontDescriptionBetterMatch              ,
+
+
+-- ** fontDescriptionCopy
+    fontDescriptionCopy                     ,
+
+
+-- ** fontDescriptionCopyStatic
+    fontDescriptionCopyStatic               ,
+
+
+-- ** fontDescriptionEqual
+    fontDescriptionEqual                    ,
+
+
+-- ** fontDescriptionFree
+    fontDescriptionFree                     ,
+
+
+-- ** fontDescriptionGetFamily
+    fontDescriptionGetFamily                ,
+
+
+-- ** fontDescriptionGetGravity
+    fontDescriptionGetGravity               ,
+
+
+-- ** fontDescriptionGetSetFields
+    fontDescriptionGetSetFields             ,
+
+
+-- ** fontDescriptionGetSize
+    fontDescriptionGetSize                  ,
+
+
+-- ** fontDescriptionGetSizeIsAbsolute
+    fontDescriptionGetSizeIsAbsolute        ,
+
+
+-- ** fontDescriptionGetStretch
+    fontDescriptionGetStretch               ,
+
+
+-- ** fontDescriptionGetStyle
+    fontDescriptionGetStyle                 ,
+
+
+-- ** fontDescriptionGetVariant
+    fontDescriptionGetVariant               ,
+
+
+-- ** fontDescriptionGetWeight
+    fontDescriptionGetWeight                ,
+
+
+-- ** fontDescriptionHash
+    fontDescriptionHash                     ,
+
+
+-- ** fontDescriptionMerge
+    fontDescriptionMerge                    ,
+
+
+-- ** fontDescriptionMergeStatic
+    fontDescriptionMergeStatic              ,
+
+
+-- ** fontDescriptionNew
+    fontDescriptionNew                      ,
+
+
+-- ** fontDescriptionSetAbsoluteSize
+    fontDescriptionSetAbsoluteSize          ,
+
+
+-- ** fontDescriptionSetFamily
+    fontDescriptionSetFamily                ,
+
+
+-- ** fontDescriptionSetFamilyStatic
+    fontDescriptionSetFamilyStatic          ,
+
+
+-- ** fontDescriptionSetGravity
+    fontDescriptionSetGravity               ,
+
+
+-- ** fontDescriptionSetSize
+    fontDescriptionSetSize                  ,
+
+
+-- ** fontDescriptionSetStretch
+    fontDescriptionSetStretch               ,
+
+
+-- ** fontDescriptionSetStyle
+    fontDescriptionSetStyle                 ,
+
+
+-- ** fontDescriptionSetVariant
+    fontDescriptionSetVariant               ,
+
+
+-- ** fontDescriptionSetWeight
+    fontDescriptionSetWeight                ,
+
+
+-- ** fontDescriptionToFilename
+    fontDescriptionToFilename               ,
+
+
+-- ** fontDescriptionToString
+    fontDescriptionToString                 ,
+
+
+-- ** fontDescriptionUnsetFields
+    fontDescriptionUnsetFields              ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype FontDescription = FontDescription (ForeignPtr FontDescription)
+foreign import ccall "pango_font_description_get_type" c_pango_font_description_get_type :: 
+    IO GType
+
+instance BoxedObject FontDescription where
+    boxedType _ = c_pango_font_description_get_type
+
+noFontDescription :: Maybe FontDescription
+noFontDescription = Nothing
+
+-- method FontDescription::new
+-- method type : Constructor
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "Pango" "FontDescription"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_new" pango_font_description_new :: 
+    IO (Ptr FontDescription)
+
+
+fontDescriptionNew ::
+    (MonadIO m) =>
+    m FontDescription
+fontDescriptionNew  = liftIO $ do
+    result <- pango_font_description_new
+    checkUnexpectedReturnNULL "pango_font_description_new" result
+    result' <- (wrapBoxed FontDescription) result
+    return result'
+
+-- method FontDescription::better_match
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "old_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_match", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_better_match" pango_font_description_better_match :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    Ptr FontDescription ->                  -- old_match : TInterface "Pango" "FontDescription"
+    Ptr FontDescription ->                  -- new_match : TInterface "Pango" "FontDescription"
+    IO CInt
+
+
+fontDescriptionBetterMatch ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Maybe (FontDescription) ->              -- old_match
+    FontDescription ->                      -- new_match
+    m Bool
+fontDescriptionBetterMatch _obj old_match new_match = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    maybeOld_match <- case old_match of
+        Nothing -> return nullPtr
+        Just jOld_match -> do
+            let jOld_match' = unsafeManagedPtrGetPtr jOld_match
+            return jOld_match'
+    let new_match' = unsafeManagedPtrGetPtr new_match
+    result <- pango_font_description_better_match _obj' maybeOld_match new_match'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    whenJust old_match touchManagedPtr
+    touchManagedPtr new_match
+    return result'
+
+-- method FontDescription::copy
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontDescription"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_copy" pango_font_description_copy :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO (Ptr FontDescription)
+
+
+fontDescriptionCopy ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m FontDescription
+fontDescriptionCopy _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_copy _obj'
+    checkUnexpectedReturnNULL "pango_font_description_copy" result
+    result' <- (wrapBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::copy_static
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontDescription"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_copy_static" pango_font_description_copy_static :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO (Ptr FontDescription)
+
+
+fontDescriptionCopyStatic ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m FontDescription
+fontDescriptionCopyStatic _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_copy_static _obj'
+    checkUnexpectedReturnNULL "pango_font_description_copy_static" result
+    result' <- (wrapBoxed FontDescription) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::equal
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc2", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_equal" pango_font_description_equal :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    Ptr FontDescription ->                  -- desc2 : TInterface "Pango" "FontDescription"
+    IO CInt
+
+
+fontDescriptionEqual ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    FontDescription ->                      -- desc2
+    m Bool
+fontDescriptionEqual _obj desc2 = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let desc2' = unsafeManagedPtrGetPtr desc2
+    result <- pango_font_description_equal _obj' desc2'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    touchManagedPtr desc2
+    return result'
+
+-- method FontDescription::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_free" pango_font_description_free :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO ()
+
+
+fontDescriptionFree ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m ()
+fontDescriptionFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_font_description_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::get_family
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_family" pango_font_description_get_family :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CString
+
+
+fontDescriptionGetFamily ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m T.Text
+fontDescriptionGetFamily _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_family _obj'
+    checkUnexpectedReturnNULL "pango_font_description_get_family" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_gravity
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Gravity"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_gravity" pango_font_description_get_gravity :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetGravity ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Gravity
+fontDescriptionGetGravity _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_gravity _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_set_fields
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "FontMask"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_set_fields" pango_font_description_get_set_fields :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetSetFields ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m [FontMask]
+fontDescriptionGetSetFields _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_set_fields _obj'
+    let result' = wordToGFlags result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_size" pango_font_description_get_size :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO Int32
+
+
+fontDescriptionGetSize ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Int32
+fontDescriptionGetSize _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_size _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontDescription::get_size_is_absolute
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_size_is_absolute" pango_font_description_get_size_is_absolute :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CInt
+
+
+fontDescriptionGetSizeIsAbsolute ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Bool
+fontDescriptionGetSizeIsAbsolute _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_size_is_absolute _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_stretch
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Stretch"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_stretch" pango_font_description_get_stretch :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetStretch ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Stretch
+fontDescriptionGetStretch _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_stretch _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_style
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Style"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_style" pango_font_description_get_style :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetStyle ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Style
+fontDescriptionGetStyle _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_style _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_variant
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Variant"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_variant" pango_font_description_get_variant :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetVariant ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Variant
+fontDescriptionGetVariant _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_variant _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::get_weight
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "Pango" "Weight"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_get_weight" pango_font_description_get_weight :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CUInt
+
+
+fontDescriptionGetWeight ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Weight
+fontDescriptionGetWeight _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_get_weight _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::hash
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_hash" pango_font_description_hash :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO Word32
+
+
+fontDescriptionHash ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m Word32
+fontDescriptionHash _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_hash _obj'
+    touchManagedPtr _obj
+    return result
+
+-- method FontDescription::merge
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_merge" pango_font_description_merge :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
+    CInt ->                                 -- replace_existing : TBasicType TBoolean
+    IO ()
+
+
+fontDescriptionMerge ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Maybe (FontDescription) ->              -- desc_to_merge
+    Bool ->                                 -- replace_existing
+    m ()
+fontDescriptionMerge _obj desc_to_merge replace_existing = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    maybeDesc_to_merge <- case desc_to_merge of
+        Nothing -> return nullPtr
+        Just jDesc_to_merge -> do
+            let jDesc_to_merge' = unsafeManagedPtrGetPtr jDesc_to_merge
+            return jDesc_to_merge'
+    let replace_existing' = (fromIntegral . fromEnum) replace_existing
+    pango_font_description_merge _obj' maybeDesc_to_merge replace_existing'
+    touchManagedPtr _obj
+    whenJust desc_to_merge touchManagedPtr
+    return ()
+
+-- method FontDescription::merge_static
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "desc_to_merge", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "replace_existing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_merge_static" pango_font_description_merge_static :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    Ptr FontDescription ->                  -- desc_to_merge : TInterface "Pango" "FontDescription"
+    CInt ->                                 -- replace_existing : TBasicType TBoolean
+    IO ()
+
+
+fontDescriptionMergeStatic ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    FontDescription ->                      -- desc_to_merge
+    Bool ->                                 -- replace_existing
+    m ()
+fontDescriptionMergeStatic _obj desc_to_merge replace_existing = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let desc_to_merge' = unsafeManagedPtrGetPtr desc_to_merge
+    let replace_existing' = (fromIntegral . fromEnum) replace_existing
+    pango_font_description_merge_static _obj' desc_to_merge' replace_existing'
+    touchManagedPtr _obj
+    touchManagedPtr desc_to_merge
+    return ()
+
+-- method FontDescription::set_absolute_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_absolute_size" pango_font_description_set_absolute_size :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CDouble ->                              -- size : TBasicType TDouble
+    IO ()
+
+
+fontDescriptionSetAbsoluteSize ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Double ->                               -- size
+    m ()
+fontDescriptionSetAbsoluteSize _obj size = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let size' = realToFrac size
+    pango_font_description_set_absolute_size _obj' size'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_family
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_family" pango_font_description_set_family :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CString ->                              -- family : TBasicType TUTF8
+    IO ()
+
+
+fontDescriptionSetFamily ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    T.Text ->                               -- family
+    m ()
+fontDescriptionSetFamily _obj family = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    family' <- textToCString family
+    pango_font_description_set_family _obj' family'
+    touchManagedPtr _obj
+    freeMem family'
+    return ()
+
+-- method FontDescription::set_family_static
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "family", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_family_static" pango_font_description_set_family_static :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CString ->                              -- family : TBasicType TUTF8
+    IO ()
+
+
+fontDescriptionSetFamilyStatic ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    T.Text ->                               -- family
+    m ()
+fontDescriptionSetFamilyStatic _obj family = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    family' <- textToCString family
+    pango_font_description_set_family_static _obj' family'
+    touchManagedPtr _obj
+    freeMem family'
+    return ()
+
+-- method FontDescription::set_gravity
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gravity", argType = TInterface "Pango" "Gravity", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_gravity" pango_font_description_set_gravity :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- gravity : TInterface "Pango" "Gravity"
+    IO ()
+
+
+fontDescriptionSetGravity ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Gravity ->                              -- gravity
+    m ()
+fontDescriptionSetGravity _obj gravity = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let gravity' = (fromIntegral . fromEnum) gravity
+    pango_font_description_set_gravity _obj' gravity'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_size
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_size" pango_font_description_set_size :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    Int32 ->                                -- size : TBasicType TInt32
+    IO ()
+
+
+fontDescriptionSetSize ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Int32 ->                                -- size
+    m ()
+fontDescriptionSetSize _obj size = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    pango_font_description_set_size _obj' size
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_stretch
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stretch", argType = TInterface "Pango" "Stretch", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_stretch" pango_font_description_set_stretch :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- stretch : TInterface "Pango" "Stretch"
+    IO ()
+
+
+fontDescriptionSetStretch ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Stretch ->                              -- stretch
+    m ()
+fontDescriptionSetStretch _obj stretch = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let stretch' = (fromIntegral . fromEnum) stretch
+    pango_font_description_set_stretch _obj' stretch'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_style
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Pango" "Style", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_style" pango_font_description_set_style :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- style : TInterface "Pango" "Style"
+    IO ()
+
+
+fontDescriptionSetStyle ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Style ->                                -- style
+    m ()
+fontDescriptionSetStyle _obj style = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let style' = (fromIntegral . fromEnum) style
+    pango_font_description_set_style _obj' style'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_variant
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "variant", argType = TInterface "Pango" "Variant", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_variant" pango_font_description_set_variant :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- variant : TInterface "Pango" "Variant"
+    IO ()
+
+
+fontDescriptionSetVariant ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Variant ->                              -- variant
+    m ()
+fontDescriptionSetVariant _obj variant = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let variant' = (fromIntegral . fromEnum) variant
+    pango_font_description_set_variant _obj' variant'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::set_weight
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weight", argType = TInterface "Pango" "Weight", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_set_weight" pango_font_description_set_weight :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- weight : TInterface "Pango" "Weight"
+    IO ()
+
+
+fontDescriptionSetWeight ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    Weight ->                               -- weight
+    m ()
+fontDescriptionSetWeight _obj weight = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let weight' = (fromIntegral . fromEnum) weight
+    pango_font_description_set_weight _obj' weight'
+    touchManagedPtr _obj
+    return ()
+
+-- method FontDescription::to_filename
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_to_filename" pango_font_description_to_filename :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CString
+
+
+fontDescriptionToFilename ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m T.Text
+fontDescriptionToFilename _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_to_filename _obj'
+    checkUnexpectedReturnNULL "pango_font_description_to_filename" result
+    result' <- cstringToText result
+    freeMem result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::to_string
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_to_string" pango_font_description_to_string :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    IO CString
+
+
+fontDescriptionToString ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    m T.Text
+fontDescriptionToString _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- pango_font_description_to_string _obj'
+    checkUnexpectedReturnNULL "pango_font_description_to_string" result
+    result' <- cstringToText result
+    freeMem result
+    touchManagedPtr _obj
+    return result'
+
+-- method FontDescription::unset_fields
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "to_unset", argType = TInterface "Pango" "FontMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "pango_font_description_unset_fields" pango_font_description_unset_fields :: 
+    Ptr FontDescription ->                  -- _obj : TInterface "Pango" "FontDescription"
+    CUInt ->                                -- to_unset : TInterface "Pango" "FontMask"
+    IO ()
+
+
+fontDescriptionUnsetFields ::
+    (MonadIO m) =>
+    FontDescription ->                      -- _obj
+    [FontMask] ->                           -- to_unset
+    m ()
+fontDescriptionUnsetFields _obj to_unset = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let to_unset' = gflagsToWord to_unset
+    pango_font_description_unset_fields _obj' to_unset'
+    touchManagedPtr _obj
+    return ()
+
+
diff --git a/GI/Pango/Structs/FontDescription.hs-boot b/GI/Pango/Structs/FontDescription.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/FontDescription.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.FontDescription where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontDescription = FontDescription (ForeignPtr FontDescription)
+instance BoxedObject FontDescription where
diff --git a/GI/Pango/Structs/FontMetrics.hs b/GI/Pango/Structs/FontMetrics.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/FontMetrics.hs
@@ -0,0 +1,439 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoFontMetrics structure holds the overall metric information
+for a font (possibly restricted to a script). The fields of this
+structure are private to implementations of a font backend. See
+the documentation of the corresponding getters for documentation
+of their meaning.
+-}
+
+module GI.Pango.Structs.FontMetrics
+    ( 
+
+-- * Exported types
+    FontMetrics(..)                         ,
+    noFontMetrics                           ,
+
+
+ -- * Methods
+-- ** fontMetricsGetApproximateCharWidth
+    fontMetricsGetApproximateCharWidth      ,
+
+
+-- ** fontMetricsGetApproximateDigitWidth
+    fontMetricsGetApproximateDigitWidth     ,
+
+
+-- ** fontMetricsGetAscent
+    fontMetricsGetAscent                    ,
+
+
+-- ** fontMetricsGetDescent
+    fontMetricsGetDescent                   ,
+
+
+-- ** fontMetricsGetStrikethroughPosition
+    fontMetricsGetStrikethroughPosition     ,
+
+
+-- ** fontMetricsGetStrikethroughThickness
+    fontMetricsGetStrikethroughThickness    ,
+
+
+-- ** fontMetricsGetUnderlinePosition
+    fontMetricsGetUnderlinePosition         ,
+
+
+-- ** fontMetricsGetUnderlineThickness
+    fontMetricsGetUnderlineThickness        ,
+
+
+-- ** fontMetricsNew
+    fontMetricsNew                          ,
+
+
+-- ** fontMetricsRef
+    fontMetricsRef                          ,
+
+
+-- ** fontMetricsUnref
+    fontMetricsUnref                        ,
+
+
+
+
+ -- * Properties
+-- ** ApproximateCharWidth
+    fontMetricsReadApproximateCharWidth     ,
+
+
+-- ** ApproximateDigitWidth
+    fontMetricsReadApproximateDigitWidth    ,
+
+
+-- ** Ascent
+    fontMetricsReadAscent                   ,
+
+
+-- ** Descent
+    fontMetricsReadDescent                  ,
+
+
+-- ** RefCount
+    fontMetricsReadRefCount                 ,
+
+
+-- ** StrikethroughPosition
+    fontMetricsReadStrikethroughPosition    ,
+
+
+-- ** StrikethroughThickness
+    fontMetricsReadStrikethroughThickness   ,
+
+
+-- ** UnderlinePosition
+    fontMetricsReadUnderlinePosition        ,
+
+
+-- ** UnderlineThickness
+    fontMetricsReadUnderlineThickness       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype FontMetrics = FontMetrics (ForeignPtr FontMetrics)
+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
+
+noFontMetrics :: Maybe FontMetrics
+noFontMetrics = Nothing
+
+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
+    checkUnexpectedReturnNULL "pango_font_metrics_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_font_metrics_ref" result
+    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 ()
+
+
diff --git a/GI/Pango/Structs/FontMetrics.hs-boot b/GI/Pango/Structs/FontMetrics.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/FontMetrics.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.FontMetrics where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype FontMetrics = FontMetrics (ForeignPtr FontMetrics)
+instance BoxedObject FontMetrics where
diff --git a/GI/Pango/Structs/GlyphGeometry.hs b/GI/Pango/Structs/GlyphGeometry.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphGeometry.hs
@@ -0,0 +1,65 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoGlyphGeometry structure contains width and positioning
+information for a single glyph.
+-}
+
+module GI.Pango.Structs.GlyphGeometry
+    ( 
+
+-- * Exported types
+    GlyphGeometry(..)                       ,
+    noGlyphGeometry                         ,
+
+
+ -- * Properties
+-- ** Width
+    glyphGeometryReadWidth                  ,
+
+
+-- ** XOffset
+    glyphGeometryReadXOffset                ,
+
+
+-- ** YOffset
+    glyphGeometryReadYOffset                ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/GlyphGeometry.hs-boot b/GI/Pango/Structs/GlyphGeometry.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphGeometry.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.GlyphGeometry where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphGeometry = GlyphGeometry (ForeignPtr GlyphGeometry)
diff --git a/GI/Pango/Structs/GlyphInfo.hs b/GI/Pango/Structs/GlyphInfo.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphInfo.hs
@@ -0,0 +1,68 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoGlyphInfo structure represents a single glyph together with
+positioning information and visual attributes.
+It contains the following fields.
+-}
+
+module GI.Pango.Structs.GlyphInfo
+    ( 
+
+-- * Exported types
+    GlyphInfo(..)                           ,
+    noGlyphInfo                             ,
+
+
+ -- * Properties
+-- ** Attr
+    glyphInfoReadAttr                       ,
+
+
+-- ** Geometry
+    glyphInfoReadGeometry                   ,
+
+
+-- ** Glyph
+    glyphInfoReadGlyph                      ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/GlyphInfo.hs-boot b/GI/Pango/Structs/GlyphInfo.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphInfo.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.GlyphInfo where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphInfo = GlyphInfo (ForeignPtr GlyphInfo)
diff --git a/GI/Pango/Structs/GlyphItem.hs b/GI/Pango/Structs/GlyphItem.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphItem.hs
@@ -0,0 +1,274 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoGlyphItem is a pair of a #PangoItem and the glyphs
+resulting from shaping the text corresponding to an item.
+As an example of the usage of #PangoGlyphItem, the results
+of shaping text with #PangoLayout is a list of #PangoLayoutLine,
+each of which contains a list of #PangoGlyphItem.
+-}
+
+module GI.Pango.Structs.GlyphItem
+    ( 
+
+-- * Exported types
+    GlyphItem(..)                           ,
+    noGlyphItem                             ,
+
+
+ -- * Methods
+-- ** glyphItemApplyAttrs
+    glyphItemApplyAttrs                     ,
+
+
+-- ** glyphItemCopy
+    glyphItemCopy                           ,
+
+
+-- ** glyphItemFree
+    glyphItemFree                           ,
+
+
+-- ** glyphItemGetLogicalWidths
+    glyphItemGetLogicalWidths               ,
+
+
+-- ** glyphItemLetterSpace
+    glyphItemLetterSpace                    ,
+
+
+-- ** glyphItemSplit
+    glyphItemSplit                          ,
+
+
+
+
+ -- * Properties
+-- ** Glyphs
+    glyphItemReadGlyphs                     ,
+
+
+-- ** Item
+    glyphItemReadItem                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype GlyphItem = GlyphItem (ForeignPtr GlyphItem)
+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
+
+noGlyphItem :: Maybe GlyphItem
+noGlyphItem = Nothing
+
+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'
+    checkUnexpectedReturnNULL "pango_glyph_item_apply_attrs" result
+    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'
+    checkUnexpectedReturnNULL "pango_glyph_item_copy" result
+    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
+    checkUnexpectedReturnNULL "pango_glyph_item_split" result
+    result' <- (wrapBoxed GlyphItem) result
+    touchManagedPtr _obj
+    freeMem text'
+    return result'
+
+
diff --git a/GI/Pango/Structs/GlyphItem.hs-boot b/GI/Pango/Structs/GlyphItem.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphItem.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.GlyphItem where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphItem = GlyphItem (ForeignPtr GlyphItem)
+instance BoxedObject GlyphItem where
diff --git a/GI/Pango/Structs/GlyphItemIter.hs b/GI/Pango/Structs/GlyphItemIter.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphItemIter.hs
@@ -0,0 +1,346 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoGlyphItemIter is an iterator over the clusters in a
+#PangoGlyphItem.  The <firstterm>forward direction</firstterm> of the
+iterator is the logical direction of text.  That is, with increasing
+@start_index and @start_char values.  If @glyph_item is right-to-left
+(that is, if <literal>@glyph_item->item->analysis.level</literal> is odd),
+then @start_glyph decreases as the iterator moves forward.  Moreover,
+in right-to-left cases, @start_glyph is greater than @end_glyph.
+
+An iterator should be initialized using either of
+pango_glyph_item_iter_init_start() and
+pango_glyph_item_iter_init_end(), for forward and backward iteration
+respectively, and walked over using any desired mixture of
+pango_glyph_item_iter_next_cluster() and
+pango_glyph_item_iter_prev_cluster().  A common idiom for doing a
+forward iteration over the clusters is:
+<programlisting>
+PangoGlyphItemIter cluster_iter;
+gboolean have_cluster;
+
+for (have_cluster = pango_glyph_item_iter_init_start (&amp;cluster_iter,
+                                                      glyph_item, text);
+     have_cluster;
+     have_cluster = pango_glyph_item_iter_next_cluster (&amp;cluster_iter))
+{
+  ...
+}
+</programlisting>
+
+Note that @text is the start of the text for layout, which is then
+indexed by <literal>@glyph_item->item->offset</literal> to get to the
+text of @glyph_item.  The @start_index and @end_index values can directly
+index into @text.  The @start_glyph, @end_glyph, @start_char, and @end_char
+values however are zero-based for the @glyph_item.  For each cluster, the
+item pointed at by the start variables is included in the cluster while
+the one pointed at by end variables is not.
+
+None of the members of a #PangoGlyphItemIter should be modified manually.
+-}
+
+module GI.Pango.Structs.GlyphItemIter
+    ( 
+
+-- * Exported types
+    GlyphItemIter(..)                       ,
+    noGlyphItemIter                         ,
+
+
+ -- * Methods
+-- ** glyphItemIterCopy
+    glyphItemIterCopy                       ,
+
+
+-- ** glyphItemIterFree
+    glyphItemIterFree                       ,
+
+
+-- ** glyphItemIterInitEnd
+    glyphItemIterInitEnd                    ,
+
+
+-- ** glyphItemIterInitStart
+    glyphItemIterInitStart                  ,
+
+
+-- ** glyphItemIterNextCluster
+    glyphItemIterNextCluster                ,
+
+
+-- ** glyphItemIterPrevCluster
+    glyphItemIterPrevCluster                ,
+
+
+
+
+ -- * Properties
+-- ** EndChar
+    glyphItemIterReadEndChar                ,
+
+
+-- ** EndGlyph
+    glyphItemIterReadEndGlyph               ,
+
+
+-- ** EndIndex
+    glyphItemIterReadEndIndex               ,
+
+
+-- ** GlyphItem
+    glyphItemIterReadGlyphItem              ,
+
+
+-- ** StartChar
+    glyphItemIterReadStartChar              ,
+
+
+-- ** StartGlyph
+    glyphItemIterReadStartGlyph             ,
+
+
+-- ** StartIndex
+    glyphItemIterReadStartIndex             ,
+
+
+-- ** Text
+    glyphItemIterReadText                   ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype GlyphItemIter = GlyphItemIter (ForeignPtr GlyphItemIter)
+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
+
+noGlyphItemIter :: Maybe GlyphItemIter
+noGlyphItemIter = Nothing
+
+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'
+    checkUnexpectedReturnNULL "pango_glyph_item_iter_copy" result
+    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'
+
+
diff --git a/GI/Pango/Structs/GlyphItemIter.hs-boot b/GI/Pango/Structs/GlyphItemIter.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphItemIter.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.GlyphItemIter where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphItemIter = GlyphItemIter (ForeignPtr GlyphItemIter)
+instance BoxedObject GlyphItemIter where
diff --git a/GI/Pango/Structs/GlyphString.hs b/GI/Pango/Structs/GlyphString.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphString.hs
@@ -0,0 +1,432 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoGlyphString structure is used to store strings
+of glyphs with geometry and visual attribute information.
+The storage for the glyph information is owned
+by the structure which simplifies memory management.
+-}
+
+module GI.Pango.Structs.GlyphString
+    ( 
+
+-- * Exported types
+    GlyphString(..)                         ,
+    noGlyphString                           ,
+
+
+ -- * Methods
+-- ** glyphStringCopy
+    glyphStringCopy                         ,
+
+
+-- ** glyphStringExtents
+    glyphStringExtents                      ,
+
+
+-- ** glyphStringExtentsRange
+    glyphStringExtentsRange                 ,
+
+
+-- ** glyphStringFree
+    glyphStringFree                         ,
+
+
+-- ** glyphStringGetLogicalWidths
+    glyphStringGetLogicalWidths             ,
+
+
+-- ** glyphStringGetWidth
+    glyphStringGetWidth                     ,
+
+
+-- ** glyphStringIndexToX
+    glyphStringIndexToX                     ,
+
+
+-- ** glyphStringNew
+    glyphStringNew                          ,
+
+
+-- ** glyphStringSetSize
+    glyphStringSetSize                      ,
+
+
+-- ** glyphStringXToIndex
+    glyphStringXToIndex                     ,
+
+
+
+
+ -- * Properties
+-- ** Glyphs
+    glyphStringReadGlyphs                   ,
+
+
+-- ** LogClusters
+    glyphStringReadLogClusters              ,
+
+
+-- ** NumGlyphs
+    glyphStringReadNumGlyphs                ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype GlyphString = GlyphString (ForeignPtr GlyphString)
+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
+
+noGlyphString :: Maybe GlyphString
+noGlyphString = Nothing
+
+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
+    checkUnexpectedReturnNULL "pango_glyph_string_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_glyph_string_copy" result
+    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')
+
+
diff --git a/GI/Pango/Structs/GlyphString.hs-boot b/GI/Pango/Structs/GlyphString.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphString.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.GlyphString where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphString = GlyphString (ForeignPtr GlyphString)
+instance BoxedObject GlyphString where
diff --git a/GI/Pango/Structs/GlyphVisAttr.hs b/GI/Pango/Structs/GlyphVisAttr.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphVisAttr.hs
@@ -0,0 +1,48 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The PangoGlyphVisAttr is used to communicate information between
+the shaping phase and the rendering phase.  More attributes may be
+added in the future.
+-}
+
+module GI.Pango.Structs.GlyphVisAttr
+    ( 
+
+-- * Exported types
+    GlyphVisAttr(..)                        ,
+    noGlyphVisAttr                          ,
+
+
+ -- * Properties
+-- ** IsClusterStart
+    glyphVisAttrReadIsClusterStart          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/GlyphVisAttr.hs-boot b/GI/Pango/Structs/GlyphVisAttr.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/GlyphVisAttr.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.GlyphVisAttr where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype GlyphVisAttr = GlyphVisAttr (ForeignPtr GlyphVisAttr)
diff --git a/GI/Pango/Structs/IncludedModule.hs b/GI/Pango/Structs/IncludedModule.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/IncludedModule.hs
@@ -0,0 +1,42 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoIncludedModule structure for a statically linked module
+contains the functions that would otherwise be loaded from a dynamically
+loaded module.
+-}
+
+module GI.Pango.Structs.IncludedModule
+    ( 
+
+-- * Exported types
+    IncludedModule(..)                      ,
+    noIncludedModule                        ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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"
+
+
diff --git a/GI/Pango/Structs/IncludedModule.hs-boot b/GI/Pango/Structs/IncludedModule.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/IncludedModule.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.IncludedModule where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype IncludedModule = IncludedModule (ForeignPtr IncludedModule)
diff --git a/GI/Pango/Structs/Item.hs b/GI/Pango/Structs/Item.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Item.hs
@@ -0,0 +1,201 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoItem structure stores information about a segment of text.
+-}
+
+module GI.Pango.Structs.Item
+    ( 
+
+-- * Exported types
+    Item(..)                                ,
+    noItem                                  ,
+
+
+ -- * Methods
+-- ** itemCopy
+    itemCopy                                ,
+
+
+-- ** itemFree
+    itemFree                                ,
+
+
+-- ** itemNew
+    itemNew                                 ,
+
+
+-- ** itemSplit
+    itemSplit                               ,
+
+
+
+
+ -- * Properties
+-- ** Analysis
+    itemReadAnalysis                        ,
+
+
+-- ** Length
+    itemReadLength                          ,
+
+
+-- ** NumChars
+    itemReadNumChars                        ,
+
+
+-- ** Offset
+    itemReadOffset                          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype Item = Item (ForeignPtr Item)
+foreign import ccall "pango_item_get_type" c_pango_item_get_type :: 
+    IO GType
+
+instance BoxedObject Item where
+    boxedType _ = c_pango_item_get_type
+
+noItem :: Maybe Item
+noItem = Nothing
+
+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
+    checkUnexpectedReturnNULL "pango_item_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_item_copy" result
+    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
+    checkUnexpectedReturnNULL "pango_item_split" result
+    result' <- (wrapBoxed Item) result
+    touchManagedPtr _obj
+    return result'
+
+
diff --git a/GI/Pango/Structs/Item.hs-boot b/GI/Pango/Structs/Item.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Item.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.Item where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Item = Item (ForeignPtr Item)
+instance BoxedObject Item where
diff --git a/GI/Pango/Structs/Language.hs b/GI/Pango/Structs/Language.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Language.hs
@@ -0,0 +1,207 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoLanguage structure is used to
+represent a language.
+
+#PangoLanguage pointers can be efficiently
+copied and compared with each other.
+-}
+
+module GI.Pango.Structs.Language
+    ( 
+
+-- * Exported types
+    Language(..)                            ,
+    noLanguage                              ,
+
+
+ -- * Methods
+-- ** languageGetSampleString
+    languageGetSampleString                 ,
+
+
+-- ** languageGetScripts
+    languageGetScripts                      ,
+
+
+-- ** languageIncludesScript
+    languageIncludesScript                  ,
+
+
+-- ** languageMatches
+    languageMatches                         ,
+
+
+-- ** languageToString
+    languageToString                        ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype Language = Language (ForeignPtr Language)
+foreign import ccall "pango_language_get_type" c_pango_language_get_type :: 
+    IO GType
+
+instance BoxedObject Language where
+    boxedType _ = c_pango_language_get_type
+
+noLanguage :: Maybe Language
+noLanguage = Nothing
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_language_get_sample_string" result
+    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
+    checkUnexpectedReturnNULL "pango_language_get_scripts" result
+    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'
+    checkUnexpectedReturnNULL "pango_language_to_string" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+
diff --git a/GI/Pango/Structs/Language.hs-boot b/GI/Pango/Structs/Language.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Language.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.Language where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Language = Language (ForeignPtr Language)
+instance BoxedObject Language where
diff --git a/GI/Pango/Structs/LayoutIter.hs b/GI/Pango/Structs/LayoutIter.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LayoutIter.hs
@@ -0,0 +1,659 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoLayoutIter structure can be used to
+iterate over the visual extents of a #PangoLayout.
+
+The #PangoLayoutIter structure is opaque, and
+has no user-visible fields.
+-}
+
+module GI.Pango.Structs.LayoutIter
+    ( 
+
+-- * Exported types
+    LayoutIter(..)                          ,
+    noLayoutIter                            ,
+
+
+ -- * Methods
+-- ** layoutIterAtLastLine
+    layoutIterAtLastLine                    ,
+
+
+-- ** layoutIterCopy
+    layoutIterCopy                          ,
+
+
+-- ** layoutIterFree
+    layoutIterFree                          ,
+
+
+-- ** layoutIterGetBaseline
+    layoutIterGetBaseline                   ,
+
+
+-- ** layoutIterGetCharExtents
+    layoutIterGetCharExtents                ,
+
+
+-- ** layoutIterGetClusterExtents
+    layoutIterGetClusterExtents             ,
+
+
+-- ** layoutIterGetIndex
+    layoutIterGetIndex                      ,
+
+
+-- ** layoutIterGetLayout
+    layoutIterGetLayout                     ,
+
+
+-- ** layoutIterGetLayoutExtents
+    layoutIterGetLayoutExtents              ,
+
+
+-- ** layoutIterGetLine
+    layoutIterGetLine                       ,
+
+
+-- ** layoutIterGetLineExtents
+    layoutIterGetLineExtents                ,
+
+
+-- ** layoutIterGetLineReadonly
+    layoutIterGetLineReadonly               ,
+
+
+-- ** layoutIterGetLineYrange
+    layoutIterGetLineYrange                 ,
+
+
+-- ** layoutIterGetRun
+    layoutIterGetRun                        ,
+
+
+-- ** layoutIterGetRunExtents
+    layoutIterGetRunExtents                 ,
+
+
+-- ** layoutIterGetRunReadonly
+    layoutIterGetRunReadonly                ,
+
+
+-- ** layoutIterNextChar
+    layoutIterNextChar                      ,
+
+
+-- ** layoutIterNextCluster
+    layoutIterNextCluster                   ,
+
+
+-- ** layoutIterNextLine
+    layoutIterNextLine                      ,
+
+
+-- ** layoutIterNextRun
+    layoutIterNextRun                       ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype LayoutIter = LayoutIter (ForeignPtr LayoutIter)
+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
+
+noLayoutIter :: Maybe LayoutIter
+noLayoutIter = Nothing
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_layout_iter_copy" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_iter_get_layout" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_iter_get_line" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_iter_get_line_readonly" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_iter_get_run" result
+    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'
+    checkUnexpectedReturnNULL "pango_layout_iter_get_run_readonly" result
+    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'
+
+
diff --git a/GI/Pango/Structs/LayoutIter.hs-boot b/GI/Pango/Structs/LayoutIter.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LayoutIter.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.LayoutIter where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype LayoutIter = LayoutIter (ForeignPtr LayoutIter)
+instance BoxedObject LayoutIter where
diff --git a/GI/Pango/Structs/LayoutLine.hs b/GI/Pango/Structs/LayoutLine.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LayoutLine.hs
@@ -0,0 +1,353 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoLayoutLine structure represents one of the lines resulting
+from laying out a paragraph via #PangoLayout. #PangoLayoutLine
+structures are obtained by calling pango_layout_get_line() and
+are only valid until the text, attributes, or settings of the
+parent #PangoLayout are modified.
+
+Routines for rendering PangoLayout objects are provided in
+code specific to each rendering system.
+-}
+
+module GI.Pango.Structs.LayoutLine
+    ( 
+
+-- * Exported types
+    LayoutLine(..)                          ,
+    noLayoutLine                            ,
+
+
+ -- * Methods
+-- ** layoutLineGetExtents
+    layoutLineGetExtents                    ,
+
+
+-- ** layoutLineGetPixelExtents
+    layoutLineGetPixelExtents               ,
+
+
+-- ** layoutLineGetXRanges
+    layoutLineGetXRanges                    ,
+
+
+-- ** layoutLineIndexToX
+    layoutLineIndexToX                      ,
+
+
+-- ** layoutLineRef
+    layoutLineRef                           ,
+
+
+-- ** layoutLineUnref
+    layoutLineUnref                         ,
+
+
+-- ** layoutLineXToIndex
+    layoutLineXToIndex                      ,
+
+
+
+
+ -- * Properties
+-- ** IsParagraphStart
+    layoutLineReadIsParagraphStart          ,
+
+
+-- ** Layout
+    layoutLineReadLayout                    ,
+
+
+-- ** Length
+    layoutLineReadLength                    ,
+
+
+-- ** ResolvedDir
+    layoutLineReadResolvedDir               ,
+
+
+-- ** Runs
+    layoutLineReadRuns                      ,
+
+
+-- ** StartIndex
+    layoutLineReadStartIndex                ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype LayoutLine = LayoutLine (ForeignPtr LayoutLine)
+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
+
+noLayoutLine :: Maybe LayoutLine
+noLayoutLine = Nothing
+
+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'
+    checkUnexpectedReturnNULL "pango_layout_line_ref" result
+    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')
+
+
diff --git a/GI/Pango/Structs/LayoutLine.hs-boot b/GI/Pango/Structs/LayoutLine.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LayoutLine.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.LayoutLine where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype LayoutLine = LayoutLine (ForeignPtr LayoutLine)
+instance BoxedObject LayoutLine where
diff --git a/GI/Pango/Structs/LogAttr.hs b/GI/Pango/Structs/LogAttr.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LogAttr.hs
@@ -0,0 +1,155 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoLogAttr structure stores information
+about the attributes of a single character.
+-}
+
+module GI.Pango.Structs.LogAttr
+    ( 
+
+-- * Exported types
+    LogAttr(..)                             ,
+    noLogAttr                               ,
+
+
+ -- * Properties
+-- ** BackspaceDeletesCharacter
+    logAttrReadBackspaceDeletesCharacter    ,
+
+
+-- ** IsCharBreak
+    logAttrReadIsCharBreak                  ,
+
+
+-- ** IsCursorPosition
+    logAttrReadIsCursorPosition             ,
+
+
+-- ** IsExpandableSpace
+    logAttrReadIsExpandableSpace            ,
+
+
+-- ** IsLineBreak
+    logAttrReadIsLineBreak                  ,
+
+
+-- ** IsMandatoryBreak
+    logAttrReadIsMandatoryBreak             ,
+
+
+-- ** IsSentenceBoundary
+    logAttrReadIsSentenceBoundary           ,
+
+
+-- ** IsSentenceEnd
+    logAttrReadIsSentenceEnd                ,
+
+
+-- ** IsSentenceStart
+    logAttrReadIsSentenceStart              ,
+
+
+-- ** IsWhite
+    logAttrReadIsWhite                      ,
+
+
+-- ** IsWordBoundary
+    logAttrReadIsWordBoundary               ,
+
+
+-- ** IsWordEnd
+    logAttrReadIsWordEnd                    ,
+
+
+-- ** IsWordStart
+    logAttrReadIsWordStart                  ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/LogAttr.hs-boot b/GI/Pango/Structs/LogAttr.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/LogAttr.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.LogAttr where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype LogAttr = LogAttr (ForeignPtr LogAttr)
diff --git a/GI/Pango/Structs/Map.hs b/GI/Pango/Structs/Map.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Map.hs
@@ -0,0 +1,35 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoMap structure can be used to determine the engine to
+use for each character.
+-}
+
+module GI.Pango.Structs.Map
+    ( 
+
+-- * Exported types
+    Map(..)                                 ,
+    noMap                                   ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype Map = Map (ForeignPtr Map)
+noMap :: Maybe Map
+noMap = Nothing
+
+
diff --git a/GI/Pango/Structs/Map.hs-boot b/GI/Pango/Structs/Map.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Map.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.Map where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Map = Map (ForeignPtr Map)
diff --git a/GI/Pango/Structs/MapEntry.hs b/GI/Pango/Structs/MapEntry.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/MapEntry.hs
@@ -0,0 +1,36 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoMapEntry contains information about the engine that should be used
+for the codepoint to which this entry belongs and also whether the engine
+matches the language tag for this entry's map exactly or just approximately.
+-}
+
+module GI.Pango.Structs.MapEntry
+    ( 
+
+-- * Exported types
+    MapEntry(..)                            ,
+    noMapEntry                              ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype MapEntry = MapEntry (ForeignPtr MapEntry)
+noMapEntry :: Maybe MapEntry
+noMapEntry = Nothing
+
+
diff --git a/GI/Pango/Structs/MapEntry.hs-boot b/GI/Pango/Structs/MapEntry.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/MapEntry.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.MapEntry where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype MapEntry = MapEntry (ForeignPtr MapEntry)
diff --git a/GI/Pango/Structs/Matrix.hs b/GI/Pango/Structs/Matrix.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Matrix.hs
@@ -0,0 +1,423 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A structure specifying a transformation between user-space
+coordinates and device coordinates. The transformation
+is given by
+
+<programlisting>
+x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0;
+y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0;
+</programlisting>
+-}
+
+module GI.Pango.Structs.Matrix
+    ( 
+
+-- * Exported types
+    Matrix(..)                              ,
+    noMatrix                                ,
+
+
+ -- * Methods
+-- ** matrixConcat
+    matrixConcat                            ,
+
+
+-- ** matrixCopy
+    matrixCopy                              ,
+
+
+-- ** matrixFree
+    matrixFree                              ,
+
+
+-- ** matrixGetFontScaleFactor
+    matrixGetFontScaleFactor                ,
+
+
+-- ** matrixRotate
+    matrixRotate                            ,
+
+
+-- ** matrixScale
+    matrixScale                             ,
+
+
+-- ** matrixTransformDistance
+    matrixTransformDistance                 ,
+
+
+-- ** matrixTransformPoint
+    matrixTransformPoint                    ,
+
+
+-- ** matrixTranslate
+    matrixTranslate                         ,
+
+
+
+
+ -- * Properties
+-- ** X0
+    matrixReadX0                            ,
+
+
+-- ** Xx
+    matrixReadXx                            ,
+
+
+-- ** Xy
+    matrixReadXy                            ,
+
+
+-- ** Y0
+    matrixReadY0                            ,
+
+
+-- ** Yx
+    matrixReadYx                            ,
+
+
+-- ** Yy
+    matrixReadYy                            ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype Matrix = Matrix (ForeignPtr Matrix)
+foreign import ccall "pango_matrix_get_type" c_pango_matrix_get_type :: 
+    IO GType
+
+instance BoxedObject Matrix where
+    boxedType _ = c_pango_matrix_get_type
+
+noMatrix :: Maybe Matrix
+noMatrix = Nothing
+
+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'
+    checkUnexpectedReturnNULL "pango_matrix_copy" result
+    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 ()
+
+
diff --git a/GI/Pango/Structs/Matrix.hs-boot b/GI/Pango/Structs/Matrix.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Matrix.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.Matrix where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Matrix = Matrix (ForeignPtr Matrix)
+instance BoxedObject Matrix where
diff --git a/GI/Pango/Structs/Rectangle.hs b/GI/Pango/Structs/Rectangle.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Rectangle.hs
@@ -0,0 +1,75 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+The #PangoRectangle structure represents a rectangle. It is frequently
+used to represent the logical or ink extents of a single glyph or section
+of text. (See, for instance, pango_font_get_glyph_extents())
+-}
+
+module GI.Pango.Structs.Rectangle
+    ( 
+
+-- * Exported types
+    Rectangle(..)                           ,
+    noRectangle                             ,
+
+
+ -- * Properties
+-- ** Height
+    rectangleReadHeight                     ,
+
+
+-- ** Width
+    rectangleReadWidth                      ,
+
+
+-- ** X
+    rectangleReadX                          ,
+
+
+-- ** Y
+    rectangleReadY                          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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
+
+
diff --git a/GI/Pango/Structs/Rectangle.hs-boot b/GI/Pango/Structs/Rectangle.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/Rectangle.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.Rectangle where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype Rectangle = Rectangle (ForeignPtr Rectangle)
diff --git a/GI/Pango/Structs/ScriptForLang.hs b/GI/Pango/Structs/ScriptForLang.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/ScriptForLang.hs
@@ -0,0 +1,36 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+-}
+
+module GI.Pango.Structs.ScriptForLang
+    ( 
+
+-- * Exported types
+    ScriptForLang(..)                       ,
+    noScriptForLang                         ,
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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\")"
+
+
diff --git a/GI/Pango/Structs/ScriptForLang.hs-boot b/GI/Pango/Structs/ScriptForLang.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/ScriptForLang.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.ScriptForLang where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype ScriptForLang = ScriptForLang (ForeignPtr ScriptForLang)
diff --git a/GI/Pango/Structs/ScriptIter.hs b/GI/Pango/Structs/ScriptIter.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/ScriptIter.hs
@@ -0,0 +1,140 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoScriptIter is used to iterate through a string
+and identify ranges in different scripts.
+-}
+
+module GI.Pango.Structs.ScriptIter
+    ( 
+
+-- * Exported types
+    ScriptIter(..)                          ,
+    noScriptIter                            ,
+
+
+ -- * Methods
+-- ** scriptIterFree
+    scriptIterFree                          ,
+
+
+-- ** scriptIterGetRange
+    scriptIterGetRange                      ,
+
+
+-- ** scriptIterNext
+    scriptIterNext                          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype 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'
+
+
diff --git a/GI/Pango/Structs/ScriptIter.hs-boot b/GI/Pango/Structs/ScriptIter.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/ScriptIter.hs-boot
@@ -0,0 +1,10 @@
+module GI.Pango.Structs.ScriptIter where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype ScriptIter = ScriptIter (ForeignPtr ScriptIter)
diff --git a/GI/Pango/Structs/TabArray.hs b/GI/Pango/Structs/TabArray.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/TabArray.hs
@@ -0,0 +1,331 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+A #PangoTabArray struct contains an array
+of tab stops. Each tab stop has an alignment and a position.
+-}
+
+module GI.Pango.Structs.TabArray
+    ( 
+
+-- * Exported types
+    TabArray(..)                            ,
+    noTabArray                              ,
+
+
+ -- * Methods
+-- ** tabArrayCopy
+    tabArrayCopy                            ,
+
+
+-- ** tabArrayFree
+    tabArrayFree                            ,
+
+
+-- ** tabArrayGetPositionsInPixels
+    tabArrayGetPositionsInPixels            ,
+
+
+-- ** tabArrayGetSize
+    tabArrayGetSize                         ,
+
+
+-- ** tabArrayGetTab
+    tabArrayGetTab                          ,
+
+
+-- ** tabArrayGetTabs
+    tabArrayGetTabs                         ,
+
+
+-- ** tabArrayNew
+    tabArrayNew                             ,
+
+
+-- ** tabArrayResize
+    tabArrayResize                          ,
+
+
+-- ** tabArraySetTab
+    tabArraySetTab                          ,
+
+
+
+
+    ) where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+import GI.Pango.Types
+import GI.Pango.Callbacks
+
+newtype TabArray = TabArray (ForeignPtr TabArray)
+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
+
+noTabArray :: Maybe TabArray
+noTabArray = Nothing
+
+-- 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'
+    checkUnexpectedReturnNULL "pango_tab_array_new" result
+    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'
+    checkUnexpectedReturnNULL "pango_tab_array_copy" result
+    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 ()
+
+
diff --git a/GI/Pango/Structs/TabArray.hs-boot b/GI/Pango/Structs/TabArray.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Structs/TabArray.hs-boot
@@ -0,0 +1,11 @@
+module GI.Pango.Structs.TabArray where
+
+import Prelude ()
+import Data.GI.Base.ShortPrelude
+
+import qualified Data.Text as T
+import qualified Data.ByteString.Char8 as B
+import qualified Data.Map as Map
+
+newtype TabArray = TabArray (ForeignPtr TabArray)
+instance BoxedObject TabArray where
diff --git a/GI/Pango/Types.hs b/GI/Pango/Types.hs
new file mode 100644
--- /dev/null
+++ b/GI/Pango/Types.hs
@@ -0,0 +1,112 @@
+module GI.Pango.Types
+    (     module GI.Pango.Objects.Context         ,
+    module GI.Pango.Objects.Engine          ,
+    module GI.Pango.Objects.EngineLang      ,
+    module GI.Pango.Objects.EngineShape     ,
+    module GI.Pango.Objects.Font            ,
+    module GI.Pango.Objects.FontFace        ,
+    module GI.Pango.Objects.FontFamily      ,
+    module GI.Pango.Objects.FontMap         ,
+    module GI.Pango.Objects.Fontset         ,
+    module GI.Pango.Objects.FontsetSimple   ,
+    module GI.Pango.Objects.Layout          ,
+    module GI.Pango.Objects.Renderer        ,
+    module GI.Pango.Structs.Analysis        ,
+    module GI.Pango.Structs.AttrClass       ,
+    module GI.Pango.Structs.AttrColor       ,
+    module GI.Pango.Structs.AttrFloat       ,
+    module GI.Pango.Structs.AttrFontDesc    ,
+    module GI.Pango.Structs.AttrInt         ,
+    module GI.Pango.Structs.AttrIterator    ,
+    module GI.Pango.Structs.AttrLanguage    ,
+    module GI.Pango.Structs.AttrList        ,
+    module GI.Pango.Structs.AttrShape       ,
+    module GI.Pango.Structs.AttrSize        ,
+    module GI.Pango.Structs.AttrString      ,
+    module GI.Pango.Structs.Attribute       ,
+    module GI.Pango.Structs.Color           ,
+    module GI.Pango.Structs.Coverage        ,
+    module GI.Pango.Structs.EngineInfo      ,
+    module GI.Pango.Structs.EngineScriptInfo,
+    module GI.Pango.Structs.FontDescription ,
+    module GI.Pango.Structs.FontMetrics     ,
+    module GI.Pango.Structs.GlyphGeometry   ,
+    module GI.Pango.Structs.GlyphInfo       ,
+    module GI.Pango.Structs.GlyphItem       ,
+    module GI.Pango.Structs.GlyphItemIter   ,
+    module GI.Pango.Structs.GlyphString     ,
+    module GI.Pango.Structs.GlyphVisAttr    ,
+    module GI.Pango.Structs.IncludedModule  ,
+    module GI.Pango.Structs.Item            ,
+    module GI.Pango.Structs.Language        ,
+    module GI.Pango.Structs.LayoutIter      ,
+    module GI.Pango.Structs.LayoutLine      ,
+    module GI.Pango.Structs.LogAttr         ,
+    module GI.Pango.Structs.Map             ,
+    module GI.Pango.Structs.MapEntry        ,
+    module GI.Pango.Structs.Matrix          ,
+    module GI.Pango.Structs.Rectangle       ,
+    module GI.Pango.Structs.ScriptForLang   ,
+    module GI.Pango.Structs.ScriptIter      ,
+    module GI.Pango.Structs.TabArray        ,
+    module GI.Pango.Enums                   ,
+    module GI.Pango.Flags                   ,
+
+
+    ) where
+
+
+import {-# SOURCE #-} GI.Pango.Objects.Context
+import {-# SOURCE #-} GI.Pango.Objects.Engine
+import {-# SOURCE #-} GI.Pango.Objects.EngineLang
+import {-# SOURCE #-} GI.Pango.Objects.EngineShape
+import {-# SOURCE #-} GI.Pango.Objects.Font
+import {-# SOURCE #-} GI.Pango.Objects.FontFace
+import {-# SOURCE #-} GI.Pango.Objects.FontFamily
+import {-# SOURCE #-} GI.Pango.Objects.FontMap
+import {-# SOURCE #-} GI.Pango.Objects.Fontset
+import {-# SOURCE #-} GI.Pango.Objects.FontsetSimple
+import {-# SOURCE #-} GI.Pango.Objects.Layout
+import {-# SOURCE #-} GI.Pango.Objects.Renderer
+import {-# SOURCE #-} GI.Pango.Structs.Analysis
+import {-# SOURCE #-} GI.Pango.Structs.AttrClass
+import {-# SOURCE #-} GI.Pango.Structs.AttrColor
+import {-# SOURCE #-} GI.Pango.Structs.AttrFloat
+import {-# SOURCE #-} GI.Pango.Structs.AttrFontDesc
+import {-# SOURCE #-} GI.Pango.Structs.AttrInt
+import {-# SOURCE #-} GI.Pango.Structs.AttrIterator
+import {-# SOURCE #-} GI.Pango.Structs.AttrLanguage
+import {-# SOURCE #-} GI.Pango.Structs.AttrList
+import {-# SOURCE #-} GI.Pango.Structs.AttrShape
+import {-# SOURCE #-} GI.Pango.Structs.AttrSize
+import {-# SOURCE #-} GI.Pango.Structs.AttrString
+import {-# SOURCE #-} GI.Pango.Structs.Attribute
+import {-# SOURCE #-} GI.Pango.Structs.Color
+import {-# SOURCE #-} GI.Pango.Structs.Coverage
+import {-# SOURCE #-} GI.Pango.Structs.EngineInfo
+import {-# SOURCE #-} GI.Pango.Structs.EngineScriptInfo
+import {-# SOURCE #-} GI.Pango.Structs.FontDescription
+import {-# SOURCE #-} GI.Pango.Structs.FontMetrics
+import {-# SOURCE #-} GI.Pango.Structs.GlyphGeometry
+import {-# SOURCE #-} GI.Pango.Structs.GlyphInfo
+import {-# SOURCE #-} GI.Pango.Structs.GlyphItem
+import {-# SOURCE #-} GI.Pango.Structs.GlyphItemIter
+import {-# SOURCE #-} GI.Pango.Structs.GlyphString
+import {-# SOURCE #-} GI.Pango.Structs.GlyphVisAttr
+import {-# SOURCE #-} GI.Pango.Structs.IncludedModule
+import {-# SOURCE #-} GI.Pango.Structs.Item
+import {-# SOURCE #-} GI.Pango.Structs.Language
+import {-# SOURCE #-} GI.Pango.Structs.LayoutIter
+import {-# SOURCE #-} GI.Pango.Structs.LayoutLine
+import {-# SOURCE #-} GI.Pango.Structs.LogAttr
+import {-# SOURCE #-} GI.Pango.Structs.Map
+import {-# SOURCE #-} GI.Pango.Structs.MapEntry
+import {-# SOURCE #-} GI.Pango.Structs.Matrix
+import {-# SOURCE #-} GI.Pango.Structs.Rectangle
+import {-# SOURCE #-} GI.Pango.Structs.ScriptForLang
+import {-# SOURCE #-} GI.Pango.Structs.ScriptIter
+import {-# SOURCE #-} GI.Pango.Structs.TabArray
+
+import GI.Pango.Enums
+import GI.Pango.Flags
+
diff --git a/GI/PangoAttributes.hs b/GI/PangoAttributes.hs
deleted file mode 100644
--- a/GI/PangoAttributes.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# 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
deleted file mode 100644
--- a/GI/PangoSignals.hs
+++ /dev/null
@@ -1,41 +0,0 @@
--- 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/gi-pango.cabal b/gi-pango.cabal
--- a/gi-pango.cabal
+++ b/gi-pango.cabal
@@ -1,6 +1,6 @@
 -- Autogenerated, do not edit.
 name:               gi-pango
-version:            0.1.36.11
+version:            0.1.36.12
 synopsis:           Pango bindings
 description:        Bindings for Pango, autogenerated by haskell-gi.
 homepage:           https://github.com/haskell-gi/haskell-gi
@@ -14,12 +14,73 @@
 
 library
     default-language:   Haskell2010
-    exposed-modules:    GI.Pango, GI.PangoAttributes, GI.PangoSignals
+    default-extensions: OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts
+    other-extensions:   PatternSynonyms ScopedTypeVariables, ViewPatterns
+    ghc-options:        -fno-warn-unused-imports -fno-warn-warnings-deprecations
+    exposed-modules:    GI.Pango.Types
+                        GI.Pango
+                        GI.Pango.Callbacks
+                        GI.Pango.Constants
+                        GI.Pango.Enums
+                        GI.Pango.Flags
+                        GI.Pango.Functions
+                        GI.Pango.Objects
+                        GI.Pango.Objects.Context
+                        GI.Pango.Objects.Engine
+                        GI.Pango.Objects.EngineLang
+                        GI.Pango.Objects.EngineShape
+                        GI.Pango.Objects.Font
+                        GI.Pango.Objects.FontFace
+                        GI.Pango.Objects.FontFamily
+                        GI.Pango.Objects.FontMap
+                        GI.Pango.Objects.Fontset
+                        GI.Pango.Objects.FontsetSimple
+                        GI.Pango.Objects.Layout
+                        GI.Pango.Objects.Renderer
+                        GI.Pango.Structs
+                        GI.Pango.Structs.Analysis
+                        GI.Pango.Structs.AttrClass
+                        GI.Pango.Structs.AttrColor
+                        GI.Pango.Structs.AttrFloat
+                        GI.Pango.Structs.AttrFontDesc
+                        GI.Pango.Structs.AttrInt
+                        GI.Pango.Structs.AttrIterator
+                        GI.Pango.Structs.AttrLanguage
+                        GI.Pango.Structs.AttrList
+                        GI.Pango.Structs.AttrShape
+                        GI.Pango.Structs.AttrSize
+                        GI.Pango.Structs.AttrString
+                        GI.Pango.Structs.Attribute
+                        GI.Pango.Structs.Color
+                        GI.Pango.Structs.Coverage
+                        GI.Pango.Structs.EngineInfo
+                        GI.Pango.Structs.EngineScriptInfo
+                        GI.Pango.Structs.FontDescription
+                        GI.Pango.Structs.FontMetrics
+                        GI.Pango.Structs.GlyphGeometry
+                        GI.Pango.Structs.GlyphInfo
+                        GI.Pango.Structs.GlyphItem
+                        GI.Pango.Structs.GlyphItemIter
+                        GI.Pango.Structs.GlyphString
+                        GI.Pango.Structs.GlyphVisAttr
+                        GI.Pango.Structs.IncludedModule
+                        GI.Pango.Structs.Item
+                        GI.Pango.Structs.Language
+                        GI.Pango.Structs.LayoutIter
+                        GI.Pango.Structs.LayoutLine
+                        GI.Pango.Structs.LogAttr
+                        GI.Pango.Structs.Map
+                        GI.Pango.Structs.MapEntry
+                        GI.Pango.Structs.Matrix
+                        GI.Pango.Structs.Rectangle
+                        GI.Pango.Structs.ScriptForLang
+                        GI.Pango.Structs.ScriptIter
+                        GI.Pango.Structs.TabArray
     pkgconfig-depends:  pango >= 1.36
     build-depends: base >= 4.7 && <5,
-        haskell-gi-base >= 0.11 && < 1,
-        gi-glib >= 0.2.44.11 && < 0.2.45,
-        gi-gobject >= 0.2.44.11 && < 0.2.45,
+        haskell-gi-base >= 0.12 && < 1,
+        gi-glib >= 0.2.44.12 && < 0.2.45,
+        gi-gobject >= 0.2.44.12 && < 0.2.45,
         bytestring >= 0.10,
         containers >= 0.5,
         text >= 1.0,
