diff --git a/GI/GIRepository.hs b/GI/GIRepository.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository.hs
@@ -0,0 +1,38 @@
+
+{- |
+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.GIRepository
+    (     module GI.GIRepository.Callbacks        ,
+    module GI.GIRepository.Enums            ,
+    module GI.GIRepository.Flags            ,
+    module GI.GIRepository.Functions        ,
+    module GI.GIRepository.Objects          ,
+    module GI.GIRepository.Structs          ,
+    module GI.GIRepository.Unions           ,
+
+
+    ) where
+
+import GI.GIRepository.Callbacks
+import GI.GIRepository.Enums
+import GI.GIRepository.Flags
+import GI.GIRepository.Functions
+import GI.GIRepository.Objects
+import GI.GIRepository.Structs
+import GI.GIRepository.Unions
+
+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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+
diff --git a/GI/GIRepository/Callbacks.hs b/GI/GIRepository/Callbacks.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Callbacks.hs
@@ -0,0 +1,20 @@
+
+{- |
+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.GIRepository.Callbacks () 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.GIRepository.Types
+
+
+
diff --git a/GI/GIRepository/Enums.hs b/GI/GIRepository/Enums.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Enums.hs
@@ -0,0 +1,311 @@
+
+{- |
+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.GIRepository.Enums
+    ( 
+
+-- * Exported types
+    NvokeError(..)                          ,
+    TypeTag(..)                             ,
+    Transfer(..)                            ,
+    ScopeType(..)                           ,
+    RepositoryError(..)                     ,
+    InfoType(..)                            ,
+    Direction(..)                           ,
+    ArrayType(..)                           ,
+
+
+    ) 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 nvokeError
+
+data NvokeError = 
+      NvokeErrorFailed
+    | NvokeErrorSymbolNotFound
+    | NvokeErrorArgumentMismatch
+    | AnotherNvokeError Int
+    deriving (Show, Eq)
+
+instance Enum NvokeError where
+    fromEnum NvokeErrorFailed = 0
+    fromEnum NvokeErrorSymbolNotFound = 1
+    fromEnum NvokeErrorArgumentMismatch = 2
+    fromEnum (AnotherNvokeError k) = k
+
+    toEnum 0 = NvokeErrorFailed
+    toEnum 1 = NvokeErrorSymbolNotFound
+    toEnum 2 = NvokeErrorArgumentMismatch
+    toEnum k = AnotherNvokeError k
+
+-- Enum TypeTag
+
+data TypeTag = 
+      TypeTagVoid
+    | TypeTagBoolean
+    | TypeTagInt8
+    | TypeTagUint8
+    | TypeTagInt16
+    | TypeTagUint16
+    | TypeTagInt32
+    | TypeTagUint32
+    | TypeTagInt64
+    | TypeTagUint64
+    | TypeTagFloat
+    | TypeTagDouble
+    | TypeTagGtype
+    | TypeTagUtf8
+    | TypeTagFilename
+    | TypeTagArray
+    | TypeTagInterface
+    | TypeTagGlist
+    | TypeTagGslist
+    | TypeTagGhash
+    | TypeTagError
+    | TypeTagUnichar
+    | AnotherTypeTag Int
+    deriving (Show, Eq)
+
+instance Enum TypeTag where
+    fromEnum TypeTagVoid = 0
+    fromEnum TypeTagBoolean = 1
+    fromEnum TypeTagInt8 = 2
+    fromEnum TypeTagUint8 = 3
+    fromEnum TypeTagInt16 = 4
+    fromEnum TypeTagUint16 = 5
+    fromEnum TypeTagInt32 = 6
+    fromEnum TypeTagUint32 = 7
+    fromEnum TypeTagInt64 = 8
+    fromEnum TypeTagUint64 = 9
+    fromEnum TypeTagFloat = 10
+    fromEnum TypeTagDouble = 11
+    fromEnum TypeTagGtype = 12
+    fromEnum TypeTagUtf8 = 13
+    fromEnum TypeTagFilename = 14
+    fromEnum TypeTagArray = 15
+    fromEnum TypeTagInterface = 16
+    fromEnum TypeTagGlist = 17
+    fromEnum TypeTagGslist = 18
+    fromEnum TypeTagGhash = 19
+    fromEnum TypeTagError = 20
+    fromEnum TypeTagUnichar = 21
+    fromEnum (AnotherTypeTag k) = k
+
+    toEnum 0 = TypeTagVoid
+    toEnum 1 = TypeTagBoolean
+    toEnum 2 = TypeTagInt8
+    toEnum 3 = TypeTagUint8
+    toEnum 4 = TypeTagInt16
+    toEnum 5 = TypeTagUint16
+    toEnum 6 = TypeTagInt32
+    toEnum 7 = TypeTagUint32
+    toEnum 8 = TypeTagInt64
+    toEnum 9 = TypeTagUint64
+    toEnum 10 = TypeTagFloat
+    toEnum 11 = TypeTagDouble
+    toEnum 12 = TypeTagGtype
+    toEnum 13 = TypeTagUtf8
+    toEnum 14 = TypeTagFilename
+    toEnum 15 = TypeTagArray
+    toEnum 16 = TypeTagInterface
+    toEnum 17 = TypeTagGlist
+    toEnum 18 = TypeTagGslist
+    toEnum 19 = TypeTagGhash
+    toEnum 20 = TypeTagError
+    toEnum 21 = TypeTagUnichar
+    toEnum k = AnotherTypeTag k
+
+-- Enum Transfer
+
+data Transfer = 
+      TransferNothing
+    | TransferContainer
+    | TransferEverything
+    | AnotherTransfer Int
+    deriving (Show, Eq)
+
+instance Enum Transfer where
+    fromEnum TransferNothing = 0
+    fromEnum TransferContainer = 1
+    fromEnum TransferEverything = 2
+    fromEnum (AnotherTransfer k) = k
+
+    toEnum 0 = TransferNothing
+    toEnum 1 = TransferContainer
+    toEnum 2 = TransferEverything
+    toEnum k = AnotherTransfer k
+
+-- Enum ScopeType
+
+data ScopeType = 
+      ScopeTypeInvalid
+    | ScopeTypeCall
+    | ScopeTypeAsync
+    | ScopeTypeNotified
+    | AnotherScopeType Int
+    deriving (Show, Eq)
+
+instance Enum ScopeType where
+    fromEnum ScopeTypeInvalid = 0
+    fromEnum ScopeTypeCall = 1
+    fromEnum ScopeTypeAsync = 2
+    fromEnum ScopeTypeNotified = 3
+    fromEnum (AnotherScopeType k) = k
+
+    toEnum 0 = ScopeTypeInvalid
+    toEnum 1 = ScopeTypeCall
+    toEnum 2 = ScopeTypeAsync
+    toEnum 3 = ScopeTypeNotified
+    toEnum k = AnotherScopeType k
+
+-- Enum RepositoryError
+
+data RepositoryError = 
+      RepositoryErrorTypelibNotFound
+    | RepositoryErrorNamespaceMismatch
+    | RepositoryErrorNamespaceVersionConflict
+    | RepositoryErrorLibraryNotFound
+    | AnotherRepositoryError Int
+    deriving (Show, Eq)
+
+instance Enum RepositoryError where
+    fromEnum RepositoryErrorTypelibNotFound = 0
+    fromEnum RepositoryErrorNamespaceMismatch = 1
+    fromEnum RepositoryErrorNamespaceVersionConflict = 2
+    fromEnum RepositoryErrorLibraryNotFound = 3
+    fromEnum (AnotherRepositoryError k) = k
+
+    toEnum 0 = RepositoryErrorTypelibNotFound
+    toEnum 1 = RepositoryErrorNamespaceMismatch
+    toEnum 2 = RepositoryErrorNamespaceVersionConflict
+    toEnum 3 = RepositoryErrorLibraryNotFound
+    toEnum k = AnotherRepositoryError k
+
+-- Enum InfoType
+
+data InfoType = 
+      InfoTypeInvalid
+    | InfoTypeFunction
+    | InfoTypeCallback
+    | InfoTypeStruct
+    | InfoTypeBoxed
+    | InfoTypeEnum
+    | InfoTypeFlags
+    | InfoTypeObject
+    | InfoTypeInterface
+    | InfoTypeConstant
+    | InfoTypeInvalid0
+    | InfoTypeUnion
+    | InfoTypeValue
+    | InfoTypeSignal
+    | InfoTypeVfunc
+    | InfoTypeProperty
+    | InfoTypeField
+    | InfoTypeArg
+    | InfoTypeType
+    | InfoTypeUnresolved
+    | AnotherInfoType Int
+    deriving (Show, Eq)
+
+instance Enum InfoType where
+    fromEnum InfoTypeInvalid = 0
+    fromEnum InfoTypeFunction = 1
+    fromEnum InfoTypeCallback = 2
+    fromEnum InfoTypeStruct = 3
+    fromEnum InfoTypeBoxed = 4
+    fromEnum InfoTypeEnum = 5
+    fromEnum InfoTypeFlags = 6
+    fromEnum InfoTypeObject = 7
+    fromEnum InfoTypeInterface = 8
+    fromEnum InfoTypeConstant = 9
+    fromEnum InfoTypeInvalid0 = 10
+    fromEnum InfoTypeUnion = 11
+    fromEnum InfoTypeValue = 12
+    fromEnum InfoTypeSignal = 13
+    fromEnum InfoTypeVfunc = 14
+    fromEnum InfoTypeProperty = 15
+    fromEnum InfoTypeField = 16
+    fromEnum InfoTypeArg = 17
+    fromEnum InfoTypeType = 18
+    fromEnum InfoTypeUnresolved = 19
+    fromEnum (AnotherInfoType k) = k
+
+    toEnum 0 = InfoTypeInvalid
+    toEnum 1 = InfoTypeFunction
+    toEnum 2 = InfoTypeCallback
+    toEnum 3 = InfoTypeStruct
+    toEnum 4 = InfoTypeBoxed
+    toEnum 5 = InfoTypeEnum
+    toEnum 6 = InfoTypeFlags
+    toEnum 7 = InfoTypeObject
+    toEnum 8 = InfoTypeInterface
+    toEnum 9 = InfoTypeConstant
+    toEnum 10 = InfoTypeInvalid0
+    toEnum 11 = InfoTypeUnion
+    toEnum 12 = InfoTypeValue
+    toEnum 13 = InfoTypeSignal
+    toEnum 14 = InfoTypeVfunc
+    toEnum 15 = InfoTypeProperty
+    toEnum 16 = InfoTypeField
+    toEnum 17 = InfoTypeArg
+    toEnum 18 = InfoTypeType
+    toEnum 19 = InfoTypeUnresolved
+    toEnum k = AnotherInfoType k
+
+-- Enum Direction
+
+data Direction = 
+      DirectionIn
+    | DirectionOut
+    | DirectionInout
+    | AnotherDirection Int
+    deriving (Show, Eq)
+
+instance Enum Direction where
+    fromEnum DirectionIn = 0
+    fromEnum DirectionOut = 1
+    fromEnum DirectionInout = 2
+    fromEnum (AnotherDirection k) = k
+
+    toEnum 0 = DirectionIn
+    toEnum 1 = DirectionOut
+    toEnum 2 = DirectionInout
+    toEnum k = AnotherDirection k
+
+-- Enum ArrayType
+
+data ArrayType = 
+      ArrayTypeC
+    | ArrayTypeArray
+    | ArrayTypePtrArray
+    | ArrayTypeByteArray
+    | AnotherArrayType Int
+    deriving (Show, Eq)
+
+instance Enum ArrayType where
+    fromEnum ArrayTypeC = 0
+    fromEnum ArrayTypeArray = 1
+    fromEnum ArrayTypePtrArray = 2
+    fromEnum ArrayTypeByteArray = 3
+    fromEnum (AnotherArrayType k) = k
+
+    toEnum 0 = ArrayTypeC
+    toEnum 1 = ArrayTypeArray
+    toEnum 2 = ArrayTypePtrArray
+    toEnum 3 = ArrayTypeByteArray
+    toEnum k = AnotherArrayType k
+
+
diff --git a/GI/GIRepository/Flags.hs b/GI/GIRepository/Flags.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Flags.hs
@@ -0,0 +1,121 @@
+
+{- |
+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.GIRepository.Flags
+    ( 
+
+-- * Exported types
+    VFuncInfoFlags(..)                      ,
+    RepositoryLoadFlags(..)                 ,
+    FunctionInfoFlags(..)                   ,
+    FieldInfoFlags(..)                      ,
+
+
+    ) 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 VFuncInfoFlags
+
+data VFuncInfoFlags = 
+      VFuncInfoFlagsMustChainUp
+    | VFuncInfoFlagsMustOverride
+    | VFuncInfoFlagsMustNotOverride
+    | VFuncInfoFlagsThrows
+    | AnotherVFuncInfoFlags Int
+    deriving (Show, Eq)
+
+instance Enum VFuncInfoFlags where
+    fromEnum VFuncInfoFlagsMustChainUp = 1
+    fromEnum VFuncInfoFlagsMustOverride = 2
+    fromEnum VFuncInfoFlagsMustNotOverride = 4
+    fromEnum VFuncInfoFlagsThrows = 8
+    fromEnum (AnotherVFuncInfoFlags k) = k
+
+    toEnum 1 = VFuncInfoFlagsMustChainUp
+    toEnum 2 = VFuncInfoFlagsMustOverride
+    toEnum 4 = VFuncInfoFlagsMustNotOverride
+    toEnum 8 = VFuncInfoFlagsThrows
+    toEnum k = AnotherVFuncInfoFlags k
+
+instance IsGFlag VFuncInfoFlags
+
+-- Flags RepositoryLoadFlags
+
+data RepositoryLoadFlags = 
+      RepositoryLoadFlagsIrepositoryLoadFlagLazy
+    | AnotherRepositoryLoadFlags Int
+    deriving (Show, Eq)
+
+instance Enum RepositoryLoadFlags where
+    fromEnum RepositoryLoadFlagsIrepositoryLoadFlagLazy = 1
+    fromEnum (AnotherRepositoryLoadFlags k) = k
+
+    toEnum 1 = RepositoryLoadFlagsIrepositoryLoadFlagLazy
+    toEnum k = AnotherRepositoryLoadFlags k
+
+instance IsGFlag RepositoryLoadFlags
+
+-- Flags FunctionInfoFlags
+
+data FunctionInfoFlags = 
+      FunctionInfoFlagsIsMethod
+    | FunctionInfoFlagsIsConstructor
+    | FunctionInfoFlagsIsGetter
+    | FunctionInfoFlagsIsSetter
+    | FunctionInfoFlagsWrapsVfunc
+    | FunctionInfoFlagsThrows
+    | AnotherFunctionInfoFlags Int
+    deriving (Show, Eq)
+
+instance Enum FunctionInfoFlags where
+    fromEnum FunctionInfoFlagsIsMethod = 1
+    fromEnum FunctionInfoFlagsIsConstructor = 2
+    fromEnum FunctionInfoFlagsIsGetter = 4
+    fromEnum FunctionInfoFlagsIsSetter = 8
+    fromEnum FunctionInfoFlagsWrapsVfunc = 16
+    fromEnum FunctionInfoFlagsThrows = 32
+    fromEnum (AnotherFunctionInfoFlags k) = k
+
+    toEnum 1 = FunctionInfoFlagsIsMethod
+    toEnum 2 = FunctionInfoFlagsIsConstructor
+    toEnum 4 = FunctionInfoFlagsIsGetter
+    toEnum 8 = FunctionInfoFlagsIsSetter
+    toEnum 16 = FunctionInfoFlagsWrapsVfunc
+    toEnum 32 = FunctionInfoFlagsThrows
+    toEnum k = AnotherFunctionInfoFlags k
+
+instance IsGFlag FunctionInfoFlags
+
+-- Flags FieldInfoFlags
+
+data FieldInfoFlags = 
+      FieldInfoFlagsReadable
+    | FieldInfoFlagsWritable
+    | AnotherFieldInfoFlags Int
+    deriving (Show, Eq)
+
+instance Enum FieldInfoFlags where
+    fromEnum FieldInfoFlagsReadable = 1
+    fromEnum FieldInfoFlagsWritable = 2
+    fromEnum (AnotherFieldInfoFlags k) = k
+
+    toEnum 1 = FieldInfoFlagsReadable
+    toEnum 2 = FieldInfoFlagsWritable
+    toEnum k = AnotherFieldInfoFlags k
+
+instance IsGFlag FieldInfoFlags
+
+
diff --git a/GI/GIRepository/Functions.hs b/GI/GIRepository/Functions.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Functions.hs
@@ -0,0 +1,4029 @@
+
+{- |
+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.GIRepository.Functions
+    ( 
+
+ -- * Methods
+-- ** argInfoGetClosure
+    argInfoGetClosure                       ,
+
+
+-- ** argInfoGetDestroy
+    argInfoGetDestroy                       ,
+
+
+-- ** argInfoGetDirection
+    argInfoGetDirection                     ,
+
+
+-- ** argInfoGetOwnershipTransfer
+    argInfoGetOwnershipTransfer             ,
+
+
+-- ** argInfoGetScope
+    argInfoGetScope                         ,
+
+
+-- ** argInfoGetType
+    argInfoGetType                          ,
+
+
+-- ** argInfoIsCallerAllocates
+    argInfoIsCallerAllocates                ,
+
+
+-- ** argInfoIsOptional
+    argInfoIsOptional                       ,
+
+
+-- ** argInfoIsReturnValue
+    argInfoIsReturnValue                    ,
+
+
+-- ** argInfoIsSkip
+    argInfoIsSkip                           ,
+
+
+-- ** argInfoLoadType
+    argInfoLoadType                         ,
+
+
+-- ** argInfoMayBeNull
+    argInfoMayBeNull                        ,
+
+
+-- ** callableInfoCanThrowGerror
+    callableInfoCanThrowGerror              ,
+
+
+-- ** callableInfoGetArg
+    callableInfoGetArg                      ,
+
+
+-- ** callableInfoGetCallerOwns
+    callableInfoGetCallerOwns               ,
+
+
+-- ** callableInfoGetInstanceOwnershipTransfer
+    callableInfoGetInstanceOwnershipTransfer,
+
+
+-- ** callableInfoGetNArgs
+    callableInfoGetNArgs                    ,
+
+
+-- ** callableInfoGetReturnAttribute
+    callableInfoGetReturnAttribute          ,
+
+
+-- ** callableInfoGetReturnType
+    callableInfoGetReturnType               ,
+
+
+-- ** callableInfoInvoke
+    callableInfoInvoke                      ,
+
+
+-- ** callableInfoIsMethod
+    callableInfoIsMethod                    ,
+
+
+-- ** callableInfoIterateReturnAttributes
+    callableInfoIterateReturnAttributes     ,
+
+
+-- ** callableInfoLoadArg
+    callableInfoLoadArg                     ,
+
+
+-- ** callableInfoLoadReturnType
+    callableInfoLoadReturnType              ,
+
+
+-- ** callableInfoMayReturnNull
+    callableInfoMayReturnNull               ,
+
+
+-- ** callableInfoSkipReturn
+    callableInfoSkipReturn                  ,
+
+
+-- ** constantInfoGetType
+    constantInfoGetType                     ,
+
+
+-- ** enumInfoGetErrorDomain
+    enumInfoGetErrorDomain                  ,
+
+
+-- ** enumInfoGetMethod
+    enumInfoGetMethod                       ,
+
+
+-- ** enumInfoGetNMethods
+    enumInfoGetNMethods                     ,
+
+
+-- ** enumInfoGetNValues
+    enumInfoGetNValues                      ,
+
+
+-- ** enumInfoGetStorageType
+    enumInfoGetStorageType                  ,
+
+
+-- ** enumInfoGetValue
+    enumInfoGetValue                        ,
+
+
+-- ** fieldInfoGetFlags
+    fieldInfoGetFlags                       ,
+
+
+-- ** fieldInfoGetOffset
+    fieldInfoGetOffset                      ,
+
+
+-- ** fieldInfoGetSize
+    fieldInfoGetSize                        ,
+
+
+-- ** fieldInfoGetType
+    fieldInfoGetType                        ,
+
+
+-- ** functionInfoGetFlags
+    functionInfoGetFlags                    ,
+
+
+-- ** functionInfoGetProperty
+    functionInfoGetProperty                 ,
+
+
+-- ** functionInfoGetSymbol
+    functionInfoGetSymbol                   ,
+
+
+-- ** functionInfoGetVfunc
+    functionInfoGetVfunc                    ,
+
+
+-- ** infoNew
+    infoNew                                 ,
+
+
+-- ** infoTypeToString
+    infoTypeToString                        ,
+
+
+-- ** interfaceInfoFindMethod
+    interfaceInfoFindMethod                 ,
+
+
+-- ** interfaceInfoFindSignal
+    interfaceInfoFindSignal                 ,
+
+
+-- ** interfaceInfoFindVfunc
+    interfaceInfoFindVfunc                  ,
+
+
+-- ** interfaceInfoGetConstant
+    interfaceInfoGetConstant                ,
+
+
+-- ** interfaceInfoGetIfaceStruct
+    interfaceInfoGetIfaceStruct             ,
+
+
+-- ** interfaceInfoGetMethod
+    interfaceInfoGetMethod                  ,
+
+
+-- ** interfaceInfoGetNConstants
+    interfaceInfoGetNConstants              ,
+
+
+-- ** interfaceInfoGetNMethods
+    interfaceInfoGetNMethods                ,
+
+
+-- ** interfaceInfoGetNPrerequisites
+    interfaceInfoGetNPrerequisites          ,
+
+
+-- ** interfaceInfoGetNProperties
+    interfaceInfoGetNProperties             ,
+
+
+-- ** interfaceInfoGetNSignals
+    interfaceInfoGetNSignals                ,
+
+
+-- ** interfaceInfoGetNVfuncs
+    interfaceInfoGetNVfuncs                 ,
+
+
+-- ** interfaceInfoGetPrerequisite
+    interfaceInfoGetPrerequisite            ,
+
+
+-- ** interfaceInfoGetProperty
+    interfaceInfoGetProperty                ,
+
+
+-- ** interfaceInfoGetSignal
+    interfaceInfoGetSignal                  ,
+
+
+-- ** interfaceInfoGetVfunc
+    interfaceInfoGetVfunc                   ,
+
+
+-- ** invokeErrorQuark
+    invokeErrorQuark                        ,
+
+
+-- ** objectInfoFindMethod
+    objectInfoFindMethod                    ,
+
+
+-- ** objectInfoFindMethodUsingInterfaces
+    objectInfoFindMethodUsingInterfaces     ,
+
+
+-- ** objectInfoFindSignal
+    objectInfoFindSignal                    ,
+
+
+-- ** objectInfoFindVfunc
+    objectInfoFindVfunc                     ,
+
+
+-- ** objectInfoFindVfuncUsingInterfaces
+    objectInfoFindVfuncUsingInterfaces      ,
+
+
+-- ** objectInfoGetAbstract
+    objectInfoGetAbstract                   ,
+
+
+-- ** objectInfoGetClassStruct
+    objectInfoGetClassStruct                ,
+
+
+-- ** objectInfoGetConstant
+    objectInfoGetConstant                   ,
+
+
+-- ** objectInfoGetField
+    objectInfoGetField                      ,
+
+
+-- ** objectInfoGetFundamental
+    objectInfoGetFundamental                ,
+
+
+-- ** objectInfoGetGetValueFunction
+    objectInfoGetGetValueFunction           ,
+
+
+-- ** objectInfoGetInterface
+    objectInfoGetInterface                  ,
+
+
+-- ** objectInfoGetMethod
+    objectInfoGetMethod                     ,
+
+
+-- ** objectInfoGetNConstants
+    objectInfoGetNConstants                 ,
+
+
+-- ** objectInfoGetNFields
+    objectInfoGetNFields                    ,
+
+
+-- ** objectInfoGetNInterfaces
+    objectInfoGetNInterfaces                ,
+
+
+-- ** objectInfoGetNMethods
+    objectInfoGetNMethods                   ,
+
+
+-- ** objectInfoGetNProperties
+    objectInfoGetNProperties                ,
+
+
+-- ** objectInfoGetNSignals
+    objectInfoGetNSignals                   ,
+
+
+-- ** objectInfoGetNVfuncs
+    objectInfoGetNVfuncs                    ,
+
+
+-- ** objectInfoGetParent
+    objectInfoGetParent                     ,
+
+
+-- ** objectInfoGetProperty
+    objectInfoGetProperty                   ,
+
+
+-- ** objectInfoGetRefFunction
+    objectInfoGetRefFunction                ,
+
+
+-- ** objectInfoGetSetValueFunction
+    objectInfoGetSetValueFunction           ,
+
+
+-- ** objectInfoGetSignal
+    objectInfoGetSignal                     ,
+
+
+-- ** objectInfoGetTypeInit
+    objectInfoGetTypeInit                   ,
+
+
+-- ** objectInfoGetTypeName
+    objectInfoGetTypeName                   ,
+
+
+-- ** objectInfoGetUnrefFunction
+    objectInfoGetUnrefFunction              ,
+
+
+-- ** objectInfoGetVfunc
+    objectInfoGetVfunc                      ,
+
+
+-- ** propertyInfoGetFlags
+    propertyInfoGetFlags                    ,
+
+
+-- ** propertyInfoGetOwnershipTransfer
+    propertyInfoGetOwnershipTransfer        ,
+
+
+-- ** propertyInfoGetType
+    propertyInfoGetType                     ,
+
+
+-- ** registeredTypeInfoGetGType
+    registeredTypeInfoGetGType              ,
+
+
+-- ** registeredTypeInfoGetTypeInit
+    registeredTypeInfoGetTypeInit           ,
+
+
+-- ** registeredTypeInfoGetTypeName
+    registeredTypeInfoGetTypeName           ,
+
+
+-- ** signalInfoGetClassClosure
+    signalInfoGetClassClosure               ,
+
+
+-- ** signalInfoGetFlags
+    signalInfoGetFlags                      ,
+
+
+-- ** signalInfoTrueStopsEmit
+    signalInfoTrueStopsEmit                 ,
+
+
+-- ** structInfoFindMethod
+    structInfoFindMethod                    ,
+
+
+-- ** structInfoGetAlignment
+    structInfoGetAlignment                  ,
+
+
+-- ** structInfoGetField
+    structInfoGetField                      ,
+
+
+-- ** structInfoGetMethod
+    structInfoGetMethod                     ,
+
+
+-- ** structInfoGetNFields
+    structInfoGetNFields                    ,
+
+
+-- ** structInfoGetNMethods
+    structInfoGetNMethods                   ,
+
+
+-- ** structInfoGetSize
+    structInfoGetSize                       ,
+
+
+-- ** structInfoIsForeign
+    structInfoIsForeign                     ,
+
+
+-- ** structInfoIsGtypeStruct
+    structInfoIsGtypeStruct                 ,
+
+
+-- ** typeInfoGetArrayFixedSize
+    typeInfoGetArrayFixedSize               ,
+
+
+-- ** typeInfoGetArrayLength
+    typeInfoGetArrayLength                  ,
+
+
+-- ** typeInfoGetArrayType
+    typeInfoGetArrayType                    ,
+
+
+-- ** typeInfoGetInterface
+    typeInfoGetInterface                    ,
+
+
+-- ** typeInfoGetParamType
+    typeInfoGetParamType                    ,
+
+
+-- ** typeInfoGetTag
+    typeInfoGetTag                          ,
+
+
+-- ** typeInfoIsPointer
+    typeInfoIsPointer                       ,
+
+
+-- ** typeInfoIsZeroTerminated
+    typeInfoIsZeroTerminated                ,
+
+
+-- ** typeTagToString
+    typeTagToString                         ,
+
+
+-- ** unionInfoFindMethod
+    unionInfoFindMethod                     ,
+
+
+-- ** unionInfoGetAlignment
+    unionInfoGetAlignment                   ,
+
+
+-- ** unionInfoGetDiscriminator
+    unionInfoGetDiscriminator               ,
+
+
+-- ** unionInfoGetDiscriminatorOffset
+    unionInfoGetDiscriminatorOffset         ,
+
+
+-- ** unionInfoGetDiscriminatorType
+    unionInfoGetDiscriminatorType           ,
+
+
+-- ** unionInfoGetField
+    unionInfoGetField                       ,
+
+
+-- ** unionInfoGetMethod
+    unionInfoGetMethod                      ,
+
+
+-- ** unionInfoGetNFields
+    unionInfoGetNFields                     ,
+
+
+-- ** unionInfoGetNMethods
+    unionInfoGetNMethods                    ,
+
+
+-- ** unionInfoGetSize
+    unionInfoGetSize                        ,
+
+
+-- ** unionInfoIsDiscriminated
+    unionInfoIsDiscriminated                ,
+
+
+-- ** valueInfoGetValue
+    valueInfoGetValue                       ,
+
+
+-- ** vfuncInfoGetFlags
+    vfuncInfoGetFlags                       ,
+
+
+-- ** vfuncInfoGetInvoker
+    vfuncInfoGetInvoker                     ,
+
+
+-- ** vfuncInfoGetOffset
+    vfuncInfoGetOffset                      ,
+
+
+-- ** vfuncInfoGetSignal
+    vfuncInfoGetSignal                      ,
+
+
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+import qualified GI.GObject as GObject
+
+-- function g_vfunc_info_get_signal
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_vfunc_info_get_signal" g_vfunc_info_get_signal :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+vfuncInfoGetSignal ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+vfuncInfoGetSignal info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_vfunc_info_get_signal info'
+    checkUnexpectedReturnNULL "g_vfunc_info_get_signal" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_vfunc_info_get_offset
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_vfunc_info_get_offset" g_vfunc_info_get_offset :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+vfuncInfoGetOffset ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+vfuncInfoGetOffset info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_vfunc_info_get_offset info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_vfunc_info_get_invoker
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_vfunc_info_get_invoker" g_vfunc_info_get_invoker :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+vfuncInfoGetInvoker ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+vfuncInfoGetInvoker info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_vfunc_info_get_invoker info'
+    checkUnexpectedReturnNULL "g_vfunc_info_get_invoker" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_vfunc_info_get_flags
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "VFuncInfoFlags"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_vfunc_info_get_flags" g_vfunc_info_get_flags :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+vfuncInfoGetFlags ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m [VFuncInfoFlags]
+vfuncInfoGetFlags info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_vfunc_info_get_flags info'
+    let result' = wordToGFlags result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_value_info_get_value
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_value_info_get_value" g_value_info_get_value :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int64
+
+
+valueInfoGetValue ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int64
+valueInfoGetValue info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_value_info_get_value info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_is_discriminated
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_is_discriminated" g_union_info_is_discriminated :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+unionInfoIsDiscriminated ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+unionInfoIsDiscriminated info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_is_discriminated info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_union_info_get_size
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_size" g_union_info_get_size :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Word64
+
+
+unionInfoGetSize ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Word64
+unionInfoGetSize info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_size info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_get_n_methods
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_n_methods" g_union_info_get_n_methods :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+unionInfoGetNMethods ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+unionInfoGetNMethods info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_n_methods info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_get_n_fields
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_n_fields" g_union_info_get_n_fields :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+unionInfoGetNFields ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+unionInfoGetNFields info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_n_fields info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_get_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_method" g_union_info_get_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+unionInfoGetMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+unionInfoGetMethod info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_method info' n
+    checkUnexpectedReturnNULL "g_union_info_get_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_union_info_get_field
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_field" g_union_info_get_field :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+unionInfoGetField ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+unionInfoGetField info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_field info' n
+    checkUnexpectedReturnNULL "g_union_info_get_field" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_union_info_get_discriminator_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_discriminator_type" g_union_info_get_discriminator_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+unionInfoGetDiscriminatorType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+unionInfoGetDiscriminatorType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_discriminator_type info'
+    checkUnexpectedReturnNULL "g_union_info_get_discriminator_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_union_info_get_discriminator_offset
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_discriminator_offset" g_union_info_get_discriminator_offset :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+unionInfoGetDiscriminatorOffset ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+unionInfoGetDiscriminatorOffset info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_discriminator_offset info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_get_discriminator
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_discriminator" g_union_info_get_discriminator :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+unionInfoGetDiscriminator ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+unionInfoGetDiscriminator info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_discriminator info' n
+    checkUnexpectedReturnNULL "g_union_info_get_discriminator" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_union_info_get_alignment
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_get_alignment" g_union_info_get_alignment :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Word64
+
+
+unionInfoGetAlignment ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Word64
+unionInfoGetAlignment info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_union_info_get_alignment info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_union_info_find_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_union_info_find_method" g_union_info_find_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+unionInfoFindMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+unionInfoFindMethod info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_union_info_find_method info' name'
+    checkUnexpectedReturnNULL "g_union_info_find_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_type_tag_to_string
+-- Args : [Arg {argName = "type", argType = TInterface "GIRepository" "TypeTag", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "type", argType = TInterface "GIRepository" "TypeTag", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_tag_to_string" g_type_tag_to_string :: 
+    CUInt ->                                -- type : TInterface "GIRepository" "TypeTag"
+    IO CString
+
+
+typeTagToString ::
+    (MonadIO m) =>
+    TypeTag ->                              -- type
+    m T.Text
+typeTagToString type_ = liftIO $ do
+    let type_' = (fromIntegral . fromEnum) type_
+    result <- g_type_tag_to_string type_'
+    checkUnexpectedReturnNULL "g_type_tag_to_string" result
+    result' <- cstringToText result
+    return result'
+
+
+-- function g_type_info_is_zero_terminated
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_is_zero_terminated" g_type_info_is_zero_terminated :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+typeInfoIsZeroTerminated ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+typeInfoIsZeroTerminated info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_is_zero_terminated info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_is_pointer
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_is_pointer" g_type_info_is_pointer :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+typeInfoIsPointer ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+typeInfoIsPointer info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_is_pointer info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_get_tag
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "TypeTag"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_tag" g_type_info_get_tag :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+typeInfoGetTag ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m TypeTag
+typeInfoGetTag info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_tag info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_get_param_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_param_type" g_type_info_get_param_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+typeInfoGetParamType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+typeInfoGetParamType info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_param_type info' n
+    checkUnexpectedReturnNULL "g_type_info_get_param_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_get_interface
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_interface" g_type_info_get_interface :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+typeInfoGetInterface ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+typeInfoGetInterface info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_interface info'
+    checkUnexpectedReturnNULL "g_type_info_get_interface" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_get_array_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "ArrayType"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_array_type" g_type_info_get_array_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+typeInfoGetArrayType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m ArrayType
+typeInfoGetArrayType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_array_type info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_type_info_get_array_length
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_array_length" g_type_info_get_array_length :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+typeInfoGetArrayLength ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+typeInfoGetArrayLength info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_array_length info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_type_info_get_array_fixed_size
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_type_info_get_array_fixed_size" g_type_info_get_array_fixed_size :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+typeInfoGetArrayFixedSize ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+typeInfoGetArrayFixedSize info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_type_info_get_array_fixed_size info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_struct_info_is_gtype_struct
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_is_gtype_struct" g_struct_info_is_gtype_struct :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+structInfoIsGtypeStruct ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+structInfoIsGtypeStruct info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_is_gtype_struct info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_struct_info_is_foreign
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_is_foreign" g_struct_info_is_foreign :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+structInfoIsForeign ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+structInfoIsForeign info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_is_foreign info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_struct_info_get_size
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_size" g_struct_info_get_size :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Word64
+
+
+structInfoGetSize ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Word64
+structInfoGetSize info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_size info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_struct_info_get_n_methods
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_n_methods" g_struct_info_get_n_methods :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+structInfoGetNMethods ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+structInfoGetNMethods info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_n_methods info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_struct_info_get_n_fields
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_n_fields" g_struct_info_get_n_fields :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+structInfoGetNFields ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+structInfoGetNFields info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_n_fields info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_struct_info_get_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_method" g_struct_info_get_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+structInfoGetMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+structInfoGetMethod info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_method info' n
+    checkUnexpectedReturnNULL "g_struct_info_get_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_struct_info_get_field
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_field" g_struct_info_get_field :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+structInfoGetField ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+structInfoGetField info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_field info' n
+    checkUnexpectedReturnNULL "g_struct_info_get_field" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_struct_info_get_alignment
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUInt64
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_get_alignment" g_struct_info_get_alignment :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Word64
+
+
+structInfoGetAlignment ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Word64
+structInfoGetAlignment info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_struct_info_get_alignment info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_struct_info_find_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_struct_info_find_method" g_struct_info_find_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+structInfoFindMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+structInfoFindMethod info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_struct_info_find_method info' name'
+    checkUnexpectedReturnNULL "g_struct_info_find_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_signal_info_true_stops_emit
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_signal_info_true_stops_emit" g_signal_info_true_stops_emit :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+signalInfoTrueStopsEmit ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+signalInfoTrueStopsEmit info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_signal_info_true_stops_emit info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_signal_info_get_flags
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GObject" "SignalFlags"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_signal_info_get_flags" g_signal_info_get_flags :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+signalInfoGetFlags ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m [GObject.SignalFlags]
+signalInfoGetFlags info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_signal_info_get_flags info'
+    let result' = wordToGFlags result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_signal_info_get_class_closure
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_signal_info_get_class_closure" g_signal_info_get_class_closure :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+signalInfoGetClassClosure ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+signalInfoGetClassClosure info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_signal_info_get_class_closure info'
+    checkUnexpectedReturnNULL "g_signal_info_get_class_closure" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_registered_type_info_get_type_name
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_registered_type_info_get_type_name" g_registered_type_info_get_type_name :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+registeredTypeInfoGetTypeName ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+registeredTypeInfoGetTypeName info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_registered_type_info_get_type_name info'
+    checkUnexpectedReturnNULL "g_registered_type_info_get_type_name" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_registered_type_info_get_type_init
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_registered_type_info_get_type_init" g_registered_type_info_get_type_init :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+registeredTypeInfoGetTypeInit ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+registeredTypeInfoGetTypeInit info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_registered_type_info_get_type_init info'
+    checkUnexpectedReturnNULL "g_registered_type_info_get_type_init" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_registered_type_info_get_g_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TGType
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_registered_type_info_get_g_type" g_registered_type_info_get_g_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CGType
+
+
+registeredTypeInfoGetGType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m GType
+registeredTypeInfoGetGType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_registered_type_info_get_g_type info'
+    let result' = GType result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_property_info_get_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_property_info_get_type" g_property_info_get_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+propertyInfoGetType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+propertyInfoGetType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_property_info_get_type info'
+    checkUnexpectedReturnNULL "g_property_info_get_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_property_info_get_ownership_transfer
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Transfer"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_property_info_get_ownership_transfer" g_property_info_get_ownership_transfer :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+propertyInfoGetOwnershipTransfer ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Transfer
+propertyInfoGetOwnershipTransfer info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_property_info_get_ownership_transfer info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_property_info_get_flags
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GObject" "ParamFlags"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_property_info_get_flags" g_property_info_get_flags :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+propertyInfoGetFlags ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m [GObject.ParamFlags]
+propertyInfoGetFlags info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_property_info_get_flags info'
+    let result' = wordToGFlags result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_vfunc
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_vfunc" g_object_info_get_vfunc :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetVfunc ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetVfunc info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_vfunc info' n
+    checkUnexpectedReturnNULL "g_object_info_get_vfunc" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_unref_function
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_unref_function" g_object_info_get_unref_function :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetUnrefFunction ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetUnrefFunction info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_unref_function info'
+    checkUnexpectedReturnNULL "g_object_info_get_unref_function" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_type_name
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_type_name" g_object_info_get_type_name :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetTypeName ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetTypeName info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_type_name info'
+    checkUnexpectedReturnNULL "g_object_info_get_type_name" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_type_init
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_type_init" g_object_info_get_type_init :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetTypeInit ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetTypeInit info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_type_init info'
+    checkUnexpectedReturnNULL "g_object_info_get_type_init" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_signal
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_signal" g_object_info_get_signal :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetSignal ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetSignal info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_signal info' n
+    checkUnexpectedReturnNULL "g_object_info_get_signal" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_set_value_function
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_set_value_function" g_object_info_get_set_value_function :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetSetValueFunction ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetSetValueFunction info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_set_value_function info'
+    checkUnexpectedReturnNULL "g_object_info_get_set_value_function" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_ref_function
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_ref_function" g_object_info_get_ref_function :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetRefFunction ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetRefFunction info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_ref_function info'
+    checkUnexpectedReturnNULL "g_object_info_get_ref_function" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_property
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_property" g_object_info_get_property :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetProperty ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetProperty info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_property info' n
+    checkUnexpectedReturnNULL "g_object_info_get_property" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_parent
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_parent" g_object_info_get_parent :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetParent ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+objectInfoGetParent info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_parent info'
+    checkUnexpectedReturnNULL "g_object_info_get_parent" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_n_vfuncs
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_vfuncs" g_object_info_get_n_vfuncs :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNVfuncs ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNVfuncs info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_vfuncs info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_signals
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_signals" g_object_info_get_n_signals :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNSignals ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNSignals info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_signals info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_properties
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_properties" g_object_info_get_n_properties :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNProperties ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNProperties info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_properties info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_methods
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_methods" g_object_info_get_n_methods :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNMethods ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNMethods info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_methods info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_interfaces
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_interfaces" g_object_info_get_n_interfaces :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNInterfaces ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNInterfaces info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_interfaces info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_fields
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_fields" g_object_info_get_n_fields :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNFields ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNFields info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_fields info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_n_constants
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_n_constants" g_object_info_get_n_constants :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+objectInfoGetNConstants ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+objectInfoGetNConstants info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_n_constants info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_object_info_get_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_method" g_object_info_get_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetMethod info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_method info' n
+    checkUnexpectedReturnNULL "g_object_info_get_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_interface
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_interface" g_object_info_get_interface :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetInterface ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetInterface info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_interface info' n
+    checkUnexpectedReturnNULL "g_object_info_get_interface" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_get_value_function
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_get_value_function" g_object_info_get_get_value_function :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+objectInfoGetGetValueFunction ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+objectInfoGetGetValueFunction info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_get_value_function info'
+    checkUnexpectedReturnNULL "g_object_info_get_get_value_function" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_fundamental
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_fundamental" g_object_info_get_fundamental :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+objectInfoGetFundamental ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+objectInfoGetFundamental info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_fundamental info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_field
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_field" g_object_info_get_field :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetField ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetField info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_field info' n
+    checkUnexpectedReturnNULL "g_object_info_get_field" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_constant
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_constant" g_object_info_get_constant :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetConstant ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+objectInfoGetConstant info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_constant info' n
+    checkUnexpectedReturnNULL "g_object_info_get_constant" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_class_struct
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_class_struct" g_object_info_get_class_struct :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+objectInfoGetClassStruct ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+objectInfoGetClassStruct info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_class_struct info'
+    checkUnexpectedReturnNULL "g_object_info_get_class_struct" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_get_abstract
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_get_abstract" g_object_info_get_abstract :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+objectInfoGetAbstract ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+objectInfoGetAbstract info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_object_info_get_abstract info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_object_info_find_vfunc_using_interfaces
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "implementor", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_find_vfunc_using_interfaces" g_object_info_find_vfunc_using_interfaces :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    Ptr BaseInfo ->                         -- implementor : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+objectInfoFindVfuncUsingInterfaces ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m (BaseInfo,BaseInfo)
+objectInfoFindVfuncUsingInterfaces info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    implementor <- callocBoxedBytes 72 :: IO (Ptr BaseInfo)
+    result <- g_object_info_find_vfunc_using_interfaces info' name' implementor
+    checkUnexpectedReturnNULL "g_object_info_find_vfunc_using_interfaces" result
+    result' <- (wrapBoxed BaseInfo) result
+    implementor' <- (wrapBoxed BaseInfo) implementor
+    touchManagedPtr info
+    freeMem name'
+    return (result', implementor')
+
+
+-- function g_object_info_find_vfunc
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_find_vfunc" g_object_info_find_vfunc :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+objectInfoFindVfunc ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+objectInfoFindVfunc info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_object_info_find_vfunc info' name'
+    checkUnexpectedReturnNULL "g_object_info_find_vfunc" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_object_info_find_signal
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_find_signal" g_object_info_find_signal :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+objectInfoFindSignal ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+objectInfoFindSignal info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_object_info_find_signal info' name'
+    checkUnexpectedReturnNULL "g_object_info_find_signal" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_object_info_find_method_using_interfaces
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "implementor", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_find_method_using_interfaces" g_object_info_find_method_using_interfaces :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    Ptr BaseInfo ->                         -- implementor : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+objectInfoFindMethodUsingInterfaces ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m (BaseInfo,BaseInfo)
+objectInfoFindMethodUsingInterfaces info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    implementor <- callocBoxedBytes 72 :: IO (Ptr BaseInfo)
+    result <- g_object_info_find_method_using_interfaces info' name' implementor
+    checkUnexpectedReturnNULL "g_object_info_find_method_using_interfaces" result
+    result' <- (wrapBoxed BaseInfo) result
+    implementor' <- (wrapBoxed BaseInfo) implementor
+    touchManagedPtr info
+    freeMem name'
+    return (result', implementor')
+
+
+-- function g_object_info_find_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_object_info_find_method" g_object_info_find_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+objectInfoFindMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+objectInfoFindMethod info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_object_info_find_method info' name'
+    checkUnexpectedReturnNULL "g_object_info_find_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_invoke_error_quark
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_invoke_error_quark" g_invoke_error_quark :: 
+    IO Word32
+
+
+invokeErrorQuark ::
+    (MonadIO m) =>
+    m Word32
+invokeErrorQuark  = liftIO $ do
+    result <- g_invoke_error_quark
+    return result
+
+
+-- function g_interface_info_get_vfunc
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_vfunc" g_interface_info_get_vfunc :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetVfunc ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetVfunc info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_vfunc info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_vfunc" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_signal
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_signal" g_interface_info_get_signal :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetSignal ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetSignal info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_signal info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_signal" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_property
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_property" g_interface_info_get_property :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetProperty ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetProperty info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_property info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_property" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_prerequisite
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_prerequisite" g_interface_info_get_prerequisite :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetPrerequisite ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetPrerequisite info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_prerequisite info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_prerequisite" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_n_vfuncs
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_vfuncs" g_interface_info_get_n_vfuncs :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNVfuncs ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNVfuncs info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_vfuncs info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_n_signals
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_signals" g_interface_info_get_n_signals :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNSignals ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNSignals info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_signals info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_n_properties
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_properties" g_interface_info_get_n_properties :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNProperties ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNProperties info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_properties info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_n_prerequisites
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_prerequisites" g_interface_info_get_n_prerequisites :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNPrerequisites ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNPrerequisites info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_prerequisites info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_n_methods
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_methods" g_interface_info_get_n_methods :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNMethods ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNMethods info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_methods info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_n_constants
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_n_constants" g_interface_info_get_n_constants :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+interfaceInfoGetNConstants ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+interfaceInfoGetNConstants info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_n_constants info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_interface_info_get_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_method" g_interface_info_get_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetMethod info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_method info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_iface_struct
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_iface_struct" g_interface_info_get_iface_struct :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetIfaceStruct ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+interfaceInfoGetIfaceStruct info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_iface_struct info'
+    checkUnexpectedReturnNULL "g_interface_info_get_iface_struct" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_get_constant
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_get_constant" g_interface_info_get_constant :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoGetConstant ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+interfaceInfoGetConstant info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_interface_info_get_constant info' n
+    checkUnexpectedReturnNULL "g_interface_info_get_constant" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_interface_info_find_vfunc
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_find_vfunc" g_interface_info_find_vfunc :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoFindVfunc ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+interfaceInfoFindVfunc info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_interface_info_find_vfunc info' name'
+    checkUnexpectedReturnNULL "g_interface_info_find_vfunc" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_interface_info_find_signal
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_find_signal" g_interface_info_find_signal :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoFindSignal ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+interfaceInfoFindSignal info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_interface_info_find_signal info' name'
+    checkUnexpectedReturnNULL "g_interface_info_find_signal" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_interface_info_find_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_interface_info_find_method" g_interface_info_find_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+interfaceInfoFindMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m BaseInfo
+interfaceInfoFindMethod info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_interface_info_find_method info' name'
+    checkUnexpectedReturnNULL "g_interface_info_find_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_info_type_to_string
+-- Args : [Arg {argName = "type", argType = TInterface "GIRepository" "InfoType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "type", argType = TInterface "GIRepository" "InfoType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_info_type_to_string" g_info_type_to_string :: 
+    CUInt ->                                -- type : TInterface "GIRepository" "InfoType"
+    IO CString
+
+
+infoTypeToString ::
+    (MonadIO m) =>
+    InfoType ->                             -- type
+    m T.Text
+infoTypeToString type_ = liftIO $ do
+    let type_' = (fromIntegral . fromEnum) type_
+    result <- g_info_type_to_string type_'
+    checkUnexpectedReturnNULL "g_info_type_to_string" result
+    result' <- cstringToText result
+    return result'
+
+
+-- function g_info_new
+-- Args : [Arg {argName = "type", argType = TInterface "GIRepository" "InfoType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "container", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "type", argType = TInterface "GIRepository" "InfoType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "container", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_info_new" g_info_new :: 
+    CUInt ->                                -- type : TInterface "GIRepository" "InfoType"
+    Ptr BaseInfo ->                         -- container : TInterface "GIRepository" "BaseInfo"
+    Ptr Typelib ->                          -- typelib : TInterface "GIRepository" "Typelib"
+    Word32 ->                               -- offset : TBasicType TUInt32
+    IO (Ptr BaseInfo)
+
+
+infoNew ::
+    (MonadIO m) =>
+    InfoType ->                             -- type
+    BaseInfo ->                             -- container
+    Typelib ->                              -- typelib
+    Word32 ->                               -- offset
+    m BaseInfo
+infoNew type_ container typelib offset = liftIO $ do
+    let type_' = (fromIntegral . fromEnum) type_
+    let container' = unsafeManagedPtrGetPtr container
+    let typelib' = unsafeManagedPtrGetPtr typelib
+    result <- g_info_new type_' container' typelib' offset
+    checkUnexpectedReturnNULL "g_info_new" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr container
+    touchManagedPtr typelib
+    return result'
+
+
+-- function g_function_info_get_vfunc
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_function_info_get_vfunc" g_function_info_get_vfunc :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+functionInfoGetVfunc ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+functionInfoGetVfunc info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_function_info_get_vfunc info'
+    checkUnexpectedReturnNULL "g_function_info_get_vfunc" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_function_info_get_symbol
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_function_info_get_symbol" g_function_info_get_symbol :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+functionInfoGetSymbol ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+functionInfoGetSymbol info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_function_info_get_symbol info'
+    checkUnexpectedReturnNULL "g_function_info_get_symbol" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_function_info_get_property
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_function_info_get_property" g_function_info_get_property :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+functionInfoGetProperty ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+functionInfoGetProperty info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_function_info_get_property info'
+    checkUnexpectedReturnNULL "g_function_info_get_property" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_function_info_get_flags
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "FunctionInfoFlags"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_function_info_get_flags" g_function_info_get_flags :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+functionInfoGetFlags ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m [FunctionInfoFlags]
+functionInfoGetFlags info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_function_info_get_flags info'
+    let result' = wordToGFlags result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_field_info_get_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_field_info_get_type" g_field_info_get_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+fieldInfoGetType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+fieldInfoGetType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_field_info_get_type info'
+    checkUnexpectedReturnNULL "g_field_info_get_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_field_info_get_size
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_field_info_get_size" g_field_info_get_size :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+fieldInfoGetSize ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+fieldInfoGetSize info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_field_info_get_size info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_field_info_get_offset
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_field_info_get_offset" g_field_info_get_offset :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+fieldInfoGetOffset ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+fieldInfoGetOffset info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_field_info_get_offset info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_field_info_get_flags
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "FieldInfoFlags"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_field_info_get_flags" g_field_info_get_flags :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+fieldInfoGetFlags ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m [FieldInfoFlags]
+fieldInfoGetFlags info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_field_info_get_flags info'
+    let result' = wordToGFlags result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_enum_info_get_value
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_value" g_enum_info_get_value :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+enumInfoGetValue ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+enumInfoGetValue info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_value info' n
+    checkUnexpectedReturnNULL "g_enum_info_get_value" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_enum_info_get_storage_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "TypeTag"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_storage_type" g_enum_info_get_storage_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+enumInfoGetStorageType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m TypeTag
+enumInfoGetStorageType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_storage_type info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_enum_info_get_n_values
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_n_values" g_enum_info_get_n_values :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+enumInfoGetNValues ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+enumInfoGetNValues info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_n_values info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_enum_info_get_n_methods
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_n_methods" g_enum_info_get_n_methods :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+enumInfoGetNMethods ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+enumInfoGetNMethods info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_n_methods info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_enum_info_get_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_method" g_enum_info_get_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+enumInfoGetMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+enumInfoGetMethod info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_method info' n
+    checkUnexpectedReturnNULL "g_enum_info_get_method" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_enum_info_get_error_domain
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_enum_info_get_error_domain" g_enum_info_get_error_domain :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+enumInfoGetErrorDomain ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m T.Text
+enumInfoGetErrorDomain info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_enum_info_get_error_domain info'
+    checkUnexpectedReturnNULL "g_enum_info_get_error_domain" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_constant_info_get_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_constant_info_get_type" g_constant_info_get_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+constantInfoGetType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+constantInfoGetType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_constant_info_get_type info'
+    checkUnexpectedReturnNULL "g_constant_info_get_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_skip_return
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_skip_return" g_callable_info_skip_return :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+callableInfoSkipReturn ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+callableInfoSkipReturn info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_skip_return info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_may_return_null
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_may_return_null" g_callable_info_may_return_null :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+callableInfoMayReturnNull ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+callableInfoMayReturnNull info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_may_return_null info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_load_return_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_load_return_type" g_callable_info_load_return_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Ptr BaseInfo ->                         -- type : TInterface "GIRepository" "BaseInfo"
+    IO ()
+
+
+callableInfoLoadReturnType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m (BaseInfo)
+callableInfoLoadReturnType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    type_ <- callocBoxedBytes 72 :: IO (Ptr BaseInfo)
+    g_callable_info_load_return_type info' type_
+    type_' <- (wrapBoxed BaseInfo) type_
+    touchManagedPtr info
+    return type_'
+
+
+-- function g_callable_info_load_arg
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "arg", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", 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 "g_callable_info_load_arg" g_callable_info_load_arg :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    Ptr BaseInfo ->                         -- arg : TInterface "GIRepository" "BaseInfo"
+    IO ()
+
+
+callableInfoLoadArg ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m (BaseInfo)
+callableInfoLoadArg info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    arg <- callocBoxedBytes 72 :: IO (Ptr BaseInfo)
+    g_callable_info_load_arg info' n arg
+    arg' <- (wrapBoxed BaseInfo) arg
+    touchManagedPtr info
+    return arg'
+
+
+-- function g_callable_info_iterate_return_attributes
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_iterate_return_attributes" g_callable_info_iterate_return_attributes :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Ptr AttributeIter ->                    -- iterator : TInterface "GIRepository" "AttributeIter"
+    Ptr CString ->                          -- name : TBasicType TUTF8
+    Ptr CString ->                          -- value : TBasicType TUTF8
+    IO CInt
+
+
+callableInfoIterateReturnAttributes ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    AttributeIter ->                        -- iterator
+    m (Bool,T.Text,T.Text)
+callableInfoIterateReturnAttributes info iterator = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    let iterator' = unsafeManagedPtrGetPtr iterator
+    name <- allocMem :: IO (Ptr CString)
+    value <- allocMem :: IO (Ptr CString)
+    result <- g_callable_info_iterate_return_attributes info' iterator' name value
+    let result' = (/= 0) result
+    name' <- peek name
+    name'' <- cstringToText name'
+    value' <- peek value
+    value'' <- cstringToText value'
+    touchManagedPtr info
+    touchManagedPtr iterator
+    freeMem name
+    freeMem value
+    return (result', name'', value'')
+
+
+-- function g_callable_info_is_method
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_is_method" g_callable_info_is_method :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+callableInfoIsMethod ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+callableInfoIsMethod info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_is_method info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_invoke
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "in_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_in_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "out_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_out_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "return_value", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_method", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "throws", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "function", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "in_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_in_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "out_args", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_out_args", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "return_value", argType = TInterface "GIRepository" "Argument", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_method", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "throws", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "g_callable_info_invoke" g_callable_info_invoke :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Ptr () ->                               -- function : TBasicType TVoid
+    Ptr Argument ->                         -- in_args : TInterface "GIRepository" "Argument"
+    Int32 ->                                -- n_in_args : TBasicType TInt32
+    Ptr Argument ->                         -- out_args : TInterface "GIRepository" "Argument"
+    Int32 ->                                -- n_out_args : TBasicType TInt32
+    Ptr Argument ->                         -- return_value : TInterface "GIRepository" "Argument"
+    CInt ->                                 -- is_method : TBasicType TBoolean
+    CInt ->                                 -- throws : TBasicType TBoolean
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+callableInfoInvoke ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Ptr () ->                               -- function
+    Argument ->                             -- in_args
+    Int32 ->                                -- n_in_args
+    Argument ->                             -- out_args
+    Int32 ->                                -- n_out_args
+    Argument ->                             -- return_value
+    Bool ->                                 -- is_method
+    Bool ->                                 -- throws
+    m ()
+callableInfoInvoke info function in_args n_in_args out_args n_out_args return_value is_method throws = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    let in_args' = unsafeManagedPtrGetPtr in_args
+    let out_args' = unsafeManagedPtrGetPtr out_args
+    let return_value' = unsafeManagedPtrGetPtr return_value
+    let is_method' = (fromIntegral . fromEnum) is_method
+    let throws' = (fromIntegral . fromEnum) throws
+    onException (do
+        _ <- propagateGError $ g_callable_info_invoke info' function in_args' n_in_args out_args' n_out_args return_value' is_method' throws'
+        touchManagedPtr info
+        touchManagedPtr in_args
+        touchManagedPtr out_args
+        touchManagedPtr return_value
+        return ()
+     ) (do
+        return ()
+     )
+
+
+-- function g_callable_info_get_return_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_get_return_type" g_callable_info_get_return_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+callableInfoGetReturnType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+callableInfoGetReturnType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_get_return_type info'
+    checkUnexpectedReturnNULL "g_callable_info_get_return_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_get_return_attribute
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", 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 "g_callable_info_get_return_attribute" g_callable_info_get_return_attribute :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO CString
+
+
+callableInfoGetReturnAttribute ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    T.Text ->                               -- name
+    m T.Text
+callableInfoGetReturnAttribute info name = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    name' <- textToCString name
+    result <- g_callable_info_get_return_attribute info' name'
+    checkUnexpectedReturnNULL "g_callable_info_get_return_attribute" result
+    result' <- cstringToText result
+    touchManagedPtr info
+    freeMem name'
+    return result'
+
+
+-- function g_callable_info_get_n_args
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_get_n_args" g_callable_info_get_n_args :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+callableInfoGetNArgs ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+callableInfoGetNArgs info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_get_n_args info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_callable_info_get_instance_ownership_transfer
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Transfer"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_get_instance_ownership_transfer" g_callable_info_get_instance_ownership_transfer :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+callableInfoGetInstanceOwnershipTransfer ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Transfer
+callableInfoGetInstanceOwnershipTransfer info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_get_instance_ownership_transfer info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_get_caller_owns
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Transfer"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_get_caller_owns" g_callable_info_get_caller_owns :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+callableInfoGetCallerOwns ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Transfer
+callableInfoGetCallerOwns info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_get_caller_owns info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_get_arg
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_get_arg" g_callable_info_get_arg :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Int32 ->                                -- n : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+callableInfoGetArg ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    Int32 ->                                -- n
+    m BaseInfo
+callableInfoGetArg info n = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_get_arg info' n
+    checkUnexpectedReturnNULL "g_callable_info_get_arg" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_callable_info_can_throw_gerror
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_callable_info_can_throw_gerror" g_callable_info_can_throw_gerror :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+callableInfoCanThrowGerror ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+callableInfoCanThrowGerror info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_callable_info_can_throw_gerror info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_may_be_null
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_may_be_null" g_arg_info_may_be_null :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+argInfoMayBeNull ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+argInfoMayBeNull info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_may_be_null info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_load_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_load_type" g_arg_info_load_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    Ptr BaseInfo ->                         -- type : TInterface "GIRepository" "BaseInfo"
+    IO ()
+
+
+argInfoLoadType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m (BaseInfo)
+argInfoLoadType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    type_ <- callocBoxedBytes 72 :: IO (Ptr BaseInfo)
+    g_arg_info_load_type info' type_
+    type_' <- (wrapBoxed BaseInfo) type_
+    touchManagedPtr info
+    return type_'
+
+
+-- function g_arg_info_is_skip
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_is_skip" g_arg_info_is_skip :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+argInfoIsSkip ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+argInfoIsSkip info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_is_skip info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_is_return_value
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_is_return_value" g_arg_info_is_return_value :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+argInfoIsReturnValue ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+argInfoIsReturnValue info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_is_return_value info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_is_optional
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_is_optional" g_arg_info_is_optional :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+argInfoIsOptional ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+argInfoIsOptional info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_is_optional info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_is_caller_allocates
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_is_caller_allocates" g_arg_info_is_caller_allocates :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+argInfoIsCallerAllocates ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Bool
+argInfoIsCallerAllocates info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_is_caller_allocates info'
+    let result' = (/= 0) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_get_type
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_type" g_arg_info_get_type :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+argInfoGetType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m BaseInfo
+argInfoGetType info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_type info'
+    checkUnexpectedReturnNULL "g_arg_info_get_type" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_get_scope
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "ScopeType"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_scope" g_arg_info_get_scope :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+argInfoGetScope ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m ScopeType
+argInfoGetScope info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_scope info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_get_ownership_transfer
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Transfer"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_ownership_transfer" g_arg_info_get_ownership_transfer :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+argInfoGetOwnershipTransfer ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Transfer
+argInfoGetOwnershipTransfer info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_ownership_transfer info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_get_direction
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Direction"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_direction" g_arg_info_get_direction :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+argInfoGetDirection ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Direction
+argInfoGetDirection info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_direction info'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr info
+    return result'
+
+
+-- function g_arg_info_get_destroy
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_destroy" g_arg_info_get_destroy :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+argInfoGetDestroy ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+argInfoGetDestroy info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_destroy info'
+    touchManagedPtr info
+    return result
+
+
+-- function g_arg_info_get_closure
+-- Args : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "info", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_arg_info_get_closure" g_arg_info_get_closure :: 
+    Ptr BaseInfo ->                         -- info : TInterface "GIRepository" "BaseInfo"
+    IO Int32
+
+
+argInfoGetClosure ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- info
+    m Int32
+argInfoGetClosure info = liftIO $ do
+    let info' = unsafeManagedPtrGetPtr info
+    result <- g_arg_info_get_closure info'
+    touchManagedPtr info
+    return result
+
+
+
diff --git a/GI/GIRepository/Objects.hs b/GI/GIRepository/Objects.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Objects.hs
@@ -0,0 +1,26 @@
+
+{- |
+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.GIRepository.Objects
+    (     module GI.GIRepository.Objects.Repository,
+
+
+    ) where
+
+import GI.GIRepository.Objects.Repository
+
+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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+
diff --git a/GI/GIRepository/Objects/Repository.hs b/GI/GIRepository/Objects/Repository.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Objects/Repository.hs
@@ -0,0 +1,867 @@
+
+{- |
+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.GIRepository.Objects.Repository
+    ( 
+
+-- * Exported types
+    Repository(..)                          ,
+    RepositoryK                             ,
+    toRepository                            ,
+    noRepository                            ,
+
+
+ -- * Methods
+-- ** repositoryDump
+    repositoryDump                          ,
+
+
+-- ** repositoryEnumerateVersions
+    repositoryEnumerateVersions             ,
+
+
+-- ** repositoryErrorQuark
+    repositoryErrorQuark                    ,
+
+
+-- ** repositoryFindByErrorDomain
+    repositoryFindByErrorDomain             ,
+
+
+-- ** repositoryFindByGtype
+    repositoryFindByGtype                   ,
+
+
+-- ** repositoryFindByName
+    repositoryFindByName                    ,
+
+
+-- ** repositoryGetCPrefix
+    repositoryGetCPrefix                    ,
+
+
+-- ** repositoryGetDefault
+    repositoryGetDefault                    ,
+
+
+-- ** repositoryGetDependencies
+    repositoryGetDependencies               ,
+
+
+-- ** repositoryGetImmediateDependencies
+    repositoryGetImmediateDependencies      ,
+
+
+-- ** repositoryGetInfo
+    repositoryGetInfo                       ,
+
+
+-- ** repositoryGetLoadedNamespaces
+    repositoryGetLoadedNamespaces           ,
+
+
+-- ** repositoryGetNInfos
+    repositoryGetNInfos                     ,
+
+
+-- ** repositoryGetSearchPath
+    repositoryGetSearchPath                 ,
+
+
+-- ** repositoryGetSharedLibrary
+    repositoryGetSharedLibrary              ,
+
+
+-- ** repositoryGetTypelibPath
+    repositoryGetTypelibPath                ,
+
+
+-- ** repositoryGetVersion
+    repositoryGetVersion                    ,
+
+
+-- ** repositoryIsRegistered
+    repositoryIsRegistered                  ,
+
+
+-- ** repositoryLoadTypelib
+    repositoryLoadTypelib                   ,
+
+
+-- ** repositoryPrependLibraryPath
+    repositoryPrependLibraryPath            ,
+
+
+-- ** repositoryPrependSearchPath
+    repositoryPrependSearchPath             ,
+
+
+-- ** repositoryRequire
+    repositoryRequire                       ,
+
+
+-- ** repositoryRequirePrivate
+    repositoryRequirePrivate                ,
+
+
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+import qualified GI.GObject as GObject
+
+newtype Repository = Repository (ForeignPtr Repository)
+foreign import ccall "g_irepository_get_type"
+    c_g_irepository_get_type :: IO GType
+
+type instance ParentTypes Repository = RepositoryParentTypes
+type RepositoryParentTypes = '[GObject.Object]
+
+instance GObject Repository where
+    gobjectIsInitiallyUnowned _ = False
+    gobjectType _ = c_g_irepository_get_type
+    
+
+class GObject o => RepositoryK o
+instance (GObject o, IsDescendantOf Repository o) => RepositoryK o
+
+toRepository :: RepositoryK o => o -> IO Repository
+toRepository = unsafeCastTo Repository
+
+noRepository :: Maybe Repository
+noRepository = Nothing
+
+type instance AttributeList Repository = RepositoryAttributeList
+type RepositoryAttributeList = ('[ ] :: [(Symbol, *)])
+
+type instance SignalList Repository = RepositorySignalList
+type RepositorySignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
+
+-- method Repository::enumerate_versions
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TGList (TBasicType TUTF8)
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_enumerate_versions" g_irepository_enumerate_versions :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO (Ptr (GList CString))
+
+
+repositoryEnumerateVersions ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m [T.Text]
+repositoryEnumerateVersions _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_enumerate_versions _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_enumerate_versions" result
+    result' <- unpackGList result
+    result'' <- mapM cstringToText result'
+    mapGList freeMem result
+    g_list_free result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result''
+
+-- method Repository::find_by_error_domain
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_find_by_error_domain" g_irepository_find_by_error_domain :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    Word32 ->                               -- domain : TBasicType TUInt32
+    IO (Ptr BaseInfo)
+
+
+repositoryFindByErrorDomain ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    Word32 ->                               -- domain
+    m BaseInfo
+repositoryFindByErrorDomain _obj domain = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- g_irepository_find_by_error_domain _obj' domain
+    checkUnexpectedReturnNULL "g_irepository_find_by_error_domain" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Repository::find_by_gtype
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gtype", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gtype", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_find_by_gtype" g_irepository_find_by_gtype :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CGType ->                               -- gtype : TBasicType TGType
+    IO (Ptr BaseInfo)
+
+
+repositoryFindByGtype ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    GType ->                                -- gtype
+    m BaseInfo
+repositoryFindByGtype _obj gtype = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let gtype' = gtypeToCGType gtype
+    result <- g_irepository_find_by_gtype _obj' gtype'
+    checkUnexpectedReturnNULL "g_irepository_find_by_gtype" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr _obj
+    return result'
+
+-- method Repository::find_by_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_find_by_name" g_irepository_find_by_name :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    CString ->                              -- name : TBasicType TUTF8
+    IO (Ptr BaseInfo)
+
+
+repositoryFindByName ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    T.Text ->                               -- name
+    m BaseInfo
+repositoryFindByName _obj namespace_ name = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    name' <- textToCString name
+    result <- g_irepository_find_by_name _obj' namespace_' name'
+    checkUnexpectedReturnNULL "g_irepository_find_by_name" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    freeMem name'
+    return result'
+
+-- method Repository::get_c_prefix
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_c_prefix" g_irepository_get_c_prefix :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO CString
+
+
+repositoryGetCPrefix ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m T.Text
+repositoryGetCPrefix _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_c_prefix _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_c_prefix" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_dependencies
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_dependencies" g_irepository_get_dependencies :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO (Ptr CString)
+
+
+repositoryGetDependencies ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m [T.Text]
+repositoryGetDependencies _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_dependencies _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_dependencies" result
+    result' <- unpackZeroTerminatedUTF8CArray result
+    mapZeroTerminatedCArray freeMem result
+    freeMem result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_immediate_dependencies
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_immediate_dependencies" g_irepository_get_immediate_dependencies :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO (Ptr CString)
+
+
+repositoryGetImmediateDependencies ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m [T.Text]
+repositoryGetImmediateDependencies _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_immediate_dependencies _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_immediate_dependencies" result
+    result' <- unpackZeroTerminatedUTF8CArray result
+    mapZeroTerminatedCArray freeMem result
+    freeMem result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_info
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, 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 "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, 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 "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_get_info" g_irepository_get_info :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    Int32 ->                                -- index : TBasicType TInt32
+    IO (Ptr BaseInfo)
+
+
+repositoryGetInfo ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    Int32 ->                                -- index
+    m BaseInfo
+repositoryGetInfo _obj namespace_ index = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_info _obj' namespace_' index
+    checkUnexpectedReturnNULL "g_irepository_get_info" result
+    result' <- (wrapBoxed BaseInfo) result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_loaded_namespaces
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", 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 "g_irepository_get_loaded_namespaces" g_irepository_get_loaded_namespaces :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    IO (Ptr CString)
+
+
+repositoryGetLoadedNamespaces ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    m [T.Text]
+repositoryGetLoadedNamespaces _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    result <- g_irepository_get_loaded_namespaces _obj'
+    checkUnexpectedReturnNULL "g_irepository_get_loaded_namespaces" result
+    result' <- unpackZeroTerminatedUTF8CArray result
+    mapZeroTerminatedCArray freeMem result
+    freeMem result
+    touchManagedPtr _obj
+    return result'
+
+-- method Repository::get_n_infos
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_get_n_infos" g_irepository_get_n_infos :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO Int32
+
+
+repositoryGetNInfos ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m Int32
+repositoryGetNInfos _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_n_infos _obj' namespace_'
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result
+
+-- method Repository::get_shared_library
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_shared_library" g_irepository_get_shared_library :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO CString
+
+
+repositoryGetSharedLibrary ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m T.Text
+repositoryGetSharedLibrary _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_shared_library _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_shared_library" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_typelib_path
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_typelib_path" g_irepository_get_typelib_path :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO CString
+
+
+repositoryGetTypelibPath ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m T.Text
+repositoryGetTypelibPath _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_typelib_path _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_typelib_path" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::get_version
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", 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 "g_irepository_get_version" g_irepository_get_version :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    IO CString
+
+
+repositoryGetVersion ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    m T.Text
+repositoryGetVersion _obj namespace_ = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    result <- g_irepository_get_version _obj' namespace_'
+    checkUnexpectedReturnNULL "g_irepository_get_version" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    return result'
+
+-- method Repository::is_registered
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_is_registered" g_irepository_is_registered :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    CString ->                              -- version : TBasicType TUTF8
+    IO CInt
+
+
+repositoryIsRegistered ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    Maybe (T.Text) ->                       -- version
+    m Bool
+repositoryIsRegistered _obj namespace_ version = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    maybeVersion <- case version of
+        Nothing -> return nullPtr
+        Just jVersion -> do
+            jVersion' <- textToCString jVersion
+            return jVersion'
+    result <- g_irepository_is_registered _obj' namespace_' maybeVersion
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    freeMem namespace_'
+    freeMem maybeVersion
+    return result'
+
+-- method Repository::load_typelib
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "g_irepository_load_typelib" g_irepository_load_typelib :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    Ptr Typelib ->                          -- typelib : TInterface "GIRepository" "Typelib"
+    CUInt ->                                -- flags : TInterface "GIRepository" "RepositoryLoadFlags"
+    Ptr (Ptr GError) ->                     -- error
+    IO CString
+
+
+repositoryLoadTypelib ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    Typelib ->                              -- typelib
+    [RepositoryLoadFlags] ->                -- flags
+    m T.Text
+repositoryLoadTypelib _obj typelib flags = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    let typelib' = unsafeManagedPtrGetPtr typelib
+    let flags' = gflagsToWord flags
+    onException (do
+        result <- propagateGError $ g_irepository_load_typelib _obj' typelib' flags'
+        checkUnexpectedReturnNULL "g_irepository_load_typelib" result
+        result' <- cstringToText result
+        touchManagedPtr _obj
+        touchManagedPtr typelib
+        return result'
+     ) (do
+        return ()
+     )
+
+-- method Repository::require
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Typelib"
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "g_irepository_require" g_irepository_require :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    CString ->                              -- version : TBasicType TUTF8
+    CUInt ->                                -- flags : TInterface "GIRepository" "RepositoryLoadFlags"
+    Ptr (Ptr GError) ->                     -- error
+    IO (Ptr Typelib)
+
+
+repositoryRequire ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- namespace_
+    Maybe (T.Text) ->                       -- version
+    [RepositoryLoadFlags] ->                -- flags
+    m Typelib
+repositoryRequire _obj namespace_ version flags = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    namespace_' <- textToCString namespace_
+    maybeVersion <- case version of
+        Nothing -> return nullPtr
+        Just jVersion -> do
+            jVersion' <- textToCString jVersion
+            return jVersion'
+    let flags' = gflagsToWord flags
+    onException (do
+        result <- propagateGError $ g_irepository_require _obj' namespace_' maybeVersion flags'
+        checkUnexpectedReturnNULL "g_irepository_require" result
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        result' <- (\x -> Typelib <$> newForeignPtr_ x) result
+        touchManagedPtr _obj
+        freeMem namespace_'
+        freeMem maybeVersion
+        return result'
+     ) (do
+        freeMem namespace_'
+        freeMem maybeVersion
+     )
+
+-- method Repository::require_private
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib_dir", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Repository", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "typelib_dir", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespace_", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "GIRepository" "RepositoryLoadFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Typelib"
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "g_irepository_require_private" g_irepository_require_private :: 
+    Ptr Repository ->                       -- _obj : TInterface "GIRepository" "Repository"
+    CString ->                              -- typelib_dir : TBasicType TUTF8
+    CString ->                              -- namespace_ : TBasicType TUTF8
+    CString ->                              -- version : TBasicType TUTF8
+    CUInt ->                                -- flags : TInterface "GIRepository" "RepositoryLoadFlags"
+    Ptr (Ptr GError) ->                     -- error
+    IO (Ptr Typelib)
+
+
+repositoryRequirePrivate ::
+    (MonadIO m, RepositoryK a) =>
+    a ->                                    -- _obj
+    T.Text ->                               -- typelib_dir
+    T.Text ->                               -- namespace_
+    Maybe (T.Text) ->                       -- version
+    [RepositoryLoadFlags] ->                -- flags
+    m Typelib
+repositoryRequirePrivate _obj typelib_dir namespace_ version flags = liftIO $ do
+    let _obj' = unsafeManagedPtrCastPtr _obj
+    typelib_dir' <- textToCString typelib_dir
+    namespace_' <- textToCString namespace_
+    maybeVersion <- case version of
+        Nothing -> return nullPtr
+        Just jVersion -> do
+            jVersion' <- textToCString jVersion
+            return jVersion'
+    let flags' = gflagsToWord flags
+    onException (do
+        result <- propagateGError $ g_irepository_require_private _obj' typelib_dir' namespace_' maybeVersion flags'
+        checkUnexpectedReturnNULL "g_irepository_require_private" result
+        -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+        result' <- (\x -> Typelib <$> newForeignPtr_ x) result
+        touchManagedPtr _obj
+        freeMem typelib_dir'
+        freeMem namespace_'
+        freeMem maybeVersion
+        return result'
+     ) (do
+        freeMem typelib_dir'
+        freeMem namespace_'
+        freeMem maybeVersion
+     )
+
+-- method Repository::dump
+-- method type : MemberFunction
+-- Args : [Arg {argName = "arg", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "arg", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : True
+-- Skip return : False
+
+foreign import ccall "g_irepository_dump" g_irepository_dump :: 
+    CString ->                              -- arg : TBasicType TUTF8
+    Ptr (Ptr GError) ->                     -- error
+    IO CInt
+
+
+repositoryDump ::
+    (MonadIO m) =>
+    T.Text ->                               -- arg
+    m ()
+repositoryDump arg = liftIO $ do
+    arg' <- textToCString arg
+    onException (do
+        _ <- propagateGError $ g_irepository_dump arg'
+        freeMem arg'
+        return ()
+     ) (do
+        freeMem arg'
+     )
+
+-- method Repository::error_quark
+-- method type : MemberFunction
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TBasicType TUInt32
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_error_quark" g_irepository_error_quark :: 
+    IO Word32
+
+
+repositoryErrorQuark ::
+    (MonadIO m) =>
+    m Word32
+repositoryErrorQuark  = liftIO $ do
+    result <- g_irepository_error_quark
+    return result
+
+-- method Repository::get_default
+-- method type : MemberFunction
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TInterface "GIRepository" "Repository"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_get_default" g_irepository_get_default :: 
+    IO (Ptr Repository)
+
+
+repositoryGetDefault ::
+    (MonadIO m) =>
+    m Repository
+repositoryGetDefault  = liftIO $ do
+    result <- g_irepository_get_default
+    checkUnexpectedReturnNULL "g_irepository_get_default" result
+    result' <- (newObject Repository) result
+    return result'
+
+-- method Repository::get_search_path
+-- method type : MemberFunction
+-- Args : []
+-- Lengths : []
+-- hInArgs : []
+-- returnType : TGSList (TBasicType TFileName)
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_get_search_path" g_irepository_get_search_path :: 
+    IO (Ptr (GSList CString))
+
+
+repositoryGetSearchPath ::
+    (MonadIO m) =>
+    m [[Char]]
+repositoryGetSearchPath  = liftIO $ do
+    result <- g_irepository_get_search_path
+    checkUnexpectedReturnNULL "g_irepository_get_search_path" result
+    result' <- unpackGSList result
+    result'' <- mapM cstringToString result'
+    return result''
+
+-- method Repository::prepend_library_path
+-- method type : MemberFunction
+-- Args : [Arg {argName = "directory", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "directory", 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 "g_irepository_prepend_library_path" g_irepository_prepend_library_path :: 
+    CString ->                              -- directory : TBasicType TUTF8
+    IO ()
+
+
+repositoryPrependLibraryPath ::
+    (MonadIO m) =>
+    T.Text ->                               -- directory
+    m ()
+repositoryPrependLibraryPath directory = liftIO $ do
+    directory' <- textToCString directory
+    g_irepository_prepend_library_path directory'
+    freeMem directory'
+    return ()
+
+-- method Repository::prepend_search_path
+-- method type : MemberFunction
+-- Args : [Arg {argName = "directory", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "directory", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_irepository_prepend_search_path" g_irepository_prepend_search_path :: 
+    CString ->                              -- directory : TBasicType TFileName
+    IO ()
+
+
+repositoryPrependSearchPath ::
+    (MonadIO m) =>
+    [Char] ->                               -- directory
+    m ()
+repositoryPrependSearchPath directory = liftIO $ do
+    directory' <- stringToCString directory
+    g_irepository_prepend_search_path directory'
+    freeMem directory'
+    return ()
+
+
diff --git a/GI/GIRepository/Objects/Repository.hs-boot b/GI/GIRepository/Objects/Repository.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Objects/Repository.hs-boot
@@ -0,0 +1,13 @@
+module GI.GIRepository.Objects.Repository 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 Repository = Repository (ForeignPtr Repository)
+instance GObject Repository where
+class GObject o => RepositoryK o
+instance (GObject o, IsDescendantOf Repository o) => RepositoryK o
diff --git a/GI/GIRepository/Structs.hs b/GI/GIRepository/Structs.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs.hs
@@ -0,0 +1,32 @@
+
+{- |
+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.GIRepository.Structs
+    (     module GI.GIRepository.Structs.AttributeIter,
+    module GI.GIRepository.Structs.BaseInfo ,
+    module GI.GIRepository.Structs.Typelib  ,
+    module GI.GIRepository.Structs.UnresolvedInfo,
+
+
+    ) where
+
+import GI.GIRepository.Structs.AttributeIter
+import GI.GIRepository.Structs.BaseInfo
+import GI.GIRepository.Structs.Typelib
+import GI.GIRepository.Structs.UnresolvedInfo
+
+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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+
diff --git a/GI/GIRepository/Structs/AttributeIter.hs b/GI/GIRepository/Structs/AttributeIter.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/AttributeIter.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)
+
+An opaque structure used to iterate over attributes
+in a #GIBaseInfo struct.
+-}
+
+module GI.GIRepository.Structs.AttributeIter
+    ( 
+
+-- * Exported types
+    AttributeIter(..)                       ,
+    noAttributeIter                         ,
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+newtype AttributeIter = AttributeIter (ForeignPtr AttributeIter)
+noAttributeIter :: Maybe AttributeIter
+noAttributeIter = Nothing
+
+
diff --git a/GI/GIRepository/Structs/AttributeIter.hs-boot b/GI/GIRepository/Structs/AttributeIter.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/AttributeIter.hs-boot
@@ -0,0 +1,10 @@
+module GI.GIRepository.Structs.AttributeIter 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 AttributeIter = AttributeIter (ForeignPtr AttributeIter)
diff --git a/GI/GIRepository/Structs/BaseInfo.hs b/GI/GIRepository/Structs/BaseInfo.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/BaseInfo.hs
@@ -0,0 +1,368 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+GIBaseInfo is the common base struct of all other *Info structs
+accessible through the #GIRepository API.
+All other structs can be casted to a #GIBaseInfo, for instance:
+<example>
+<title>Casting a #GIFunctionInfo to #GIBaseInfo</title>
+<programlisting>
+   GIFunctionInfo *function_info = ...;
+   GIBaseInfo *info = (GIBaseInfo*)function_info;
+</programlisting>
+</example>
+Most #GIRepository APIs returning a #GIBaseInfo is actually creating a new struct, in other
+words, g_base_info_unref() has to be called when done accessing the data.
+GIBaseInfos are normally accessed by calling either
+g_irepository_find_by_name(), g_irepository_find_by_gtype() or g_irepository_get_info().
+
+<example>
+<title>Getting the Button of the Gtk typelib</title>
+<programlisting>
+   GIBaseInfo *button_info = g_irepository_find_by_name(NULL, "Gtk", "Button");
+   ... use button_info ...
+   g_base_info_unref(button_info);
+</programlisting>
+</example>
+
+<refsect1 id="gi-gibaseinfo.struct-hierarchy" role="struct_hierarchy">
+<title role="struct_hierarchy.title">Struct hierarchy</title>
+<synopsis>
+  GIBaseInfo
+   +----<link linkend="gi-GIArgInfo">GIArgInfo</link>
+   +----<link linkend="gi-GICallableInfo">GICallableInfo</link>
+   +----<link linkend="gi-GIConstantInfo">GIConstantInfo</link>
+   +----<link linkend="gi-GIFieldInfo">GIFieldInfo</link>
+   +----<link linkend="gi-GIPropertyInfo">GIPropertyInfo</link>
+   +----<link linkend="gi-GIRegisteredTypeInfo">GIRegisteredTypeInfo</link>
+   +----<link linkend="gi-GITypeInfo">GITypeInfo</link>
+</synopsis>
+</refsect1>
+-}
+
+module GI.GIRepository.Structs.BaseInfo
+    ( 
+
+-- * Exported types
+    BaseInfo(..)                            ,
+    noBaseInfo                              ,
+
+
+ -- * Methods
+-- ** baseInfoEqual
+    baseInfoEqual                           ,
+
+
+-- ** baseInfoGetAttribute
+    baseInfoGetAttribute                    ,
+
+
+-- ** baseInfoGetContainer
+    baseInfoGetContainer                    ,
+
+
+-- ** baseInfoGetName
+    baseInfoGetName                         ,
+
+
+-- ** baseInfoGetNamespace
+    baseInfoGetNamespace                    ,
+
+
+-- ** baseInfoGetType
+    baseInfoGetType                         ,
+
+
+-- ** baseInfoGetTypelib
+    baseInfoGetTypelib                      ,
+
+
+-- ** baseInfoIsDeprecated
+    baseInfoIsDeprecated                    ,
+
+
+-- ** baseInfoIterateAttributes
+    baseInfoIterateAttributes               ,
+
+
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+newtype BaseInfo = BaseInfo (ForeignPtr BaseInfo)
+foreign import ccall "g_base_info_gtype_get_type" c_g_base_info_gtype_get_type :: 
+    IO GType
+
+instance BoxedObject BaseInfo where
+    boxedType _ = c_g_base_info_gtype_get_type
+
+noBaseInfo :: Maybe BaseInfo
+noBaseInfo = Nothing
+
+-- method BaseInfo::equal
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "info2", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "info2", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_equal" g_base_info_equal :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    Ptr BaseInfo ->                         -- info2 : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+baseInfoEqual ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    BaseInfo ->                             -- info2
+    m Bool
+baseInfoEqual _obj info2 = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let info2' = unsafeManagedPtrGetPtr info2
+    result <- g_base_info_equal _obj' info2'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    touchManagedPtr info2
+    return result'
+
+-- method BaseInfo::get_attribute
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", 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 "g_base_info_get_attribute" g_base_info_get_attribute :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    CString ->                              -- name : TBasicType TUTF8
+    IO CString
+
+
+baseInfoGetAttribute ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    T.Text ->                               -- name
+    m T.Text
+baseInfoGetAttribute _obj name = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    name' <- textToCString name
+    result <- g_base_info_get_attribute _obj' name'
+    checkUnexpectedReturnNULL "g_base_info_get_attribute" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    freeMem name'
+    return result'
+
+-- method BaseInfo::get_container
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "BaseInfo"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_get_container" g_base_info_get_container :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr BaseInfo)
+
+
+baseInfoGetContainer ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m BaseInfo
+baseInfoGetContainer _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_get_container _obj'
+    checkUnexpectedReturnNULL "g_base_info_get_container" result
+    result' <- (newBoxed BaseInfo) result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::get_name
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_get_name" g_base_info_get_name :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+baseInfoGetName ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m T.Text
+baseInfoGetName _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_get_name _obj'
+    checkUnexpectedReturnNULL "g_base_info_get_name" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::get_namespace
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_get_namespace" g_base_info_get_namespace :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO CString
+
+
+baseInfoGetNamespace ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m T.Text
+baseInfoGetNamespace _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_get_namespace _obj'
+    checkUnexpectedReturnNULL "g_base_info_get_namespace" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::get_type
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "InfoType"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_get_type" g_base_info_get_type :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO CUInt
+
+
+baseInfoGetType ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m InfoType
+baseInfoGetType _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_get_type _obj'
+    let result' = (toEnum . fromIntegral) result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::get_typelib
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TInterface "GIRepository" "Typelib"
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_get_typelib" g_base_info_get_typelib :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO (Ptr Typelib)
+
+
+baseInfoGetTypelib ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m Typelib
+baseInfoGetTypelib _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_get_typelib _obj'
+    checkUnexpectedReturnNULL "g_base_info_get_typelib" result
+    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
+    result' <- (\x -> Typelib <$> newForeignPtr_ x) result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::is_deprecated
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_is_deprecated" g_base_info_is_deprecated :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    IO CInt
+
+
+baseInfoIsDeprecated ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    m Bool
+baseInfoIsDeprecated _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_base_info_is_deprecated _obj'
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    return result'
+
+-- method BaseInfo::iterate_attributes
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "BaseInfo", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "iterator", argType = TInterface "GIRepository" "AttributeIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_base_info_iterate_attributes" g_base_info_iterate_attributes :: 
+    Ptr BaseInfo ->                         -- _obj : TInterface "GIRepository" "BaseInfo"
+    Ptr AttributeIter ->                    -- iterator : TInterface "GIRepository" "AttributeIter"
+    Ptr CString ->                          -- name : TBasicType TUTF8
+    Ptr CString ->                          -- value : TBasicType TUTF8
+    IO CInt
+
+
+baseInfoIterateAttributes ::
+    (MonadIO m) =>
+    BaseInfo ->                             -- _obj
+    AttributeIter ->                        -- iterator
+    m (Bool,T.Text,T.Text)
+baseInfoIterateAttributes _obj iterator = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    let iterator' = unsafeManagedPtrGetPtr iterator
+    name <- allocMem :: IO (Ptr CString)
+    value <- allocMem :: IO (Ptr CString)
+    result <- g_base_info_iterate_attributes _obj' iterator' name value
+    let result' = (/= 0) result
+    name' <- peek name
+    name'' <- cstringToText name'
+    value' <- peek value
+    value'' <- cstringToText value'
+    touchManagedPtr _obj
+    touchManagedPtr iterator
+    freeMem name
+    freeMem value
+    return (result', name'', value'')
+
+
diff --git a/GI/GIRepository/Structs/BaseInfo.hs-boot b/GI/GIRepository/Structs/BaseInfo.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/BaseInfo.hs-boot
@@ -0,0 +1,11 @@
+module GI.GIRepository.Structs.BaseInfo 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 BaseInfo = BaseInfo (ForeignPtr BaseInfo)
+instance BoxedObject BaseInfo where
diff --git a/GI/GIRepository/Structs/Typelib.hs b/GI/GIRepository/Structs/Typelib.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/Typelib.hs
@@ -0,0 +1,130 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+TODO
+-}
+
+module GI.GIRepository.Structs.Typelib
+    ( 
+
+-- * Exported types
+    Typelib(..)                             ,
+    noTypelib                               ,
+
+
+ -- * Methods
+-- ** typelibFree
+    typelibFree                             ,
+
+
+-- ** typelibGetNamespace
+    typelibGetNamespace                     ,
+
+
+-- ** typelibSymbol
+    typelibSymbol                           ,
+
+
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+newtype Typelib = Typelib (ForeignPtr Typelib)
+noTypelib :: Maybe Typelib
+noTypelib = Nothing
+
+-- method Typelib::free
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TVoid
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_typelib_free" g_typelib_free :: 
+    Ptr Typelib ->                          -- _obj : TInterface "GIRepository" "Typelib"
+    IO ()
+
+
+typelibFree ::
+    (MonadIO m) =>
+    Typelib ->                              -- _obj
+    m ()
+typelibFree _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    g_typelib_free _obj'
+    touchManagedPtr _obj
+    return ()
+
+-- method Typelib::get_namespace
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TUTF8
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_typelib_get_namespace" g_typelib_get_namespace :: 
+    Ptr Typelib ->                          -- _obj : TInterface "GIRepository" "Typelib"
+    IO CString
+
+
+typelibGetNamespace ::
+    (MonadIO m) =>
+    Typelib ->                              -- _obj
+    m T.Text
+typelibGetNamespace _obj = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    result <- g_typelib_get_namespace _obj'
+    checkUnexpectedReturnNULL "g_typelib_get_namespace" result
+    result' <- cstringToText result
+    touchManagedPtr _obj
+    return result'
+
+-- method Typelib::symbol
+-- method type : OrdinaryMethod
+-- Args : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symbol_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symbol", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- Lengths : []
+-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GIRepository" "Typelib", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symbol_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "symbol", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
+-- returnType : TBasicType TBoolean
+-- throws : False
+-- Skip return : False
+
+foreign import ccall "g_typelib_symbol" g_typelib_symbol :: 
+    Ptr Typelib ->                          -- _obj : TInterface "GIRepository" "Typelib"
+    CString ->                              -- symbol_name : TBasicType TUTF8
+    Ptr () ->                               -- symbol : TBasicType TVoid
+    IO CInt
+
+
+typelibSymbol ::
+    (MonadIO m) =>
+    Typelib ->                              -- _obj
+    T.Text ->                               -- symbol_name
+    Ptr () ->                               -- symbol
+    m Bool
+typelibSymbol _obj symbol_name symbol = liftIO $ do
+    let _obj' = unsafeManagedPtrGetPtr _obj
+    symbol_name' <- textToCString symbol_name
+    result <- g_typelib_symbol _obj' symbol_name' symbol
+    let result' = (/= 0) result
+    touchManagedPtr _obj
+    freeMem symbol_name'
+    return result'
+
+
diff --git a/GI/GIRepository/Structs/Typelib.hs-boot b/GI/GIRepository/Structs/Typelib.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/Typelib.hs-boot
@@ -0,0 +1,10 @@
+module GI.GIRepository.Structs.Typelib 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 Typelib = Typelib (ForeignPtr Typelib)
diff --git a/GI/GIRepository/Structs/UnresolvedInfo.hs b/GI/GIRepository/Structs/UnresolvedInfo.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/UnresolvedInfo.hs
@@ -0,0 +1,34 @@
+
+{- |
+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
+License    : LGPL-2.1
+Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
+
+Represents a unresolved type in a typelib.
+-}
+
+module GI.GIRepository.Structs.UnresolvedInfo
+    ( 
+
+-- * Exported types
+    UnresolvedInfo(..)                      ,
+    noUnresolvedInfo                        ,
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+newtype UnresolvedInfo = UnresolvedInfo (ForeignPtr UnresolvedInfo)
+noUnresolvedInfo :: Maybe UnresolvedInfo
+noUnresolvedInfo = Nothing
+
+
diff --git a/GI/GIRepository/Structs/UnresolvedInfo.hs-boot b/GI/GIRepository/Structs/UnresolvedInfo.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Structs/UnresolvedInfo.hs-boot
@@ -0,0 +1,10 @@
+module GI.GIRepository.Structs.UnresolvedInfo 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 UnresolvedInfo = UnresolvedInfo (ForeignPtr UnresolvedInfo)
diff --git a/GI/GIRepository/Types.hs b/GI/GIRepository/Types.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Types.hs
@@ -0,0 +1,24 @@
+module GI.GIRepository.Types
+    (     module GI.GIRepository.Objects.Repository,
+    module GI.GIRepository.Structs.AttributeIter,
+    module GI.GIRepository.Structs.BaseInfo ,
+    module GI.GIRepository.Structs.Typelib  ,
+    module GI.GIRepository.Structs.UnresolvedInfo,
+    module GI.GIRepository.Unions.Argument  ,
+    module GI.GIRepository.Enums            ,
+    module GI.GIRepository.Flags            ,
+
+
+    ) where
+
+
+import {-# SOURCE #-} GI.GIRepository.Objects.Repository
+import {-# SOURCE #-} GI.GIRepository.Structs.AttributeIter
+import {-# SOURCE #-} GI.GIRepository.Structs.BaseInfo
+import {-# SOURCE #-} GI.GIRepository.Structs.Typelib
+import {-# SOURCE #-} GI.GIRepository.Structs.UnresolvedInfo
+import {-# SOURCE #-} GI.GIRepository.Unions.Argument
+
+import GI.GIRepository.Enums
+import GI.GIRepository.Flags
+
diff --git a/GI/GIRepository/Unions.hs b/GI/GIRepository/Unions.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Unions.hs
@@ -0,0 +1,26 @@
+
+{- |
+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.GIRepository.Unions
+    (     module GI.GIRepository.Unions.Argument  ,
+
+
+    ) where
+
+import GI.GIRepository.Unions.Argument
+
+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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+
diff --git a/GI/GIRepository/Unions/Argument.hs b/GI/GIRepository/Unions/Argument.hs
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Unions/Argument.hs
@@ -0,0 +1,228 @@
+
+{- |
+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.GIRepository.Unions.Argument
+    ( 
+
+-- * Exported types
+    Argument(..)                            ,
+    noArgument                              ,
+
+
+ -- * Properties
+-- ** VBoolean
+    argumentReadVBoolean                    ,
+
+
+-- ** VDouble
+    argumentReadVDouble                     ,
+
+
+-- ** VFloat
+    argumentReadVFloat                      ,
+
+
+-- ** VInt
+    argumentReadVInt                        ,
+
+
+-- ** VInt16
+    argumentReadVInt16                      ,
+
+
+-- ** VInt32
+    argumentReadVInt32                      ,
+
+
+-- ** VInt64
+    argumentReadVInt64                      ,
+
+
+-- ** VInt8
+    argumentReadVInt8                       ,
+
+
+-- ** VLong
+    argumentReadVLong                       ,
+
+
+-- ** VPointer
+    argumentReadVPointer                    ,
+
+
+-- ** VShort
+    argumentReadVShort                      ,
+
+
+-- ** VSize
+    argumentReadVSize                       ,
+
+
+-- ** VSsize
+    argumentReadVSsize                      ,
+
+
+-- ** VString
+    argumentReadVString                     ,
+
+
+-- ** VUint
+    argumentReadVUint                       ,
+
+
+-- ** VUint16
+    argumentReadVUint16                     ,
+
+
+-- ** VUint32
+    argumentReadVUint32                     ,
+
+
+-- ** VUint64
+    argumentReadVUint64                     ,
+
+
+-- ** VUint8
+    argumentReadVUint8                      ,
+
+
+-- ** VUlong
+    argumentReadVUlong                      ,
+
+
+-- ** VUshort
+    argumentReadVUshort                     ,
+
+
+
+
+    ) 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.GIRepository.Types
+import GI.GIRepository.Callbacks
+
+newtype Argument = Argument (ForeignPtr Argument)
+noArgument :: Maybe Argument
+noArgument = Nothing
+
+argumentReadVBoolean :: Argument -> IO Bool
+argumentReadVBoolean s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CInt
+    let val' = (/= 0) val
+    return val'
+
+argumentReadVInt8 :: Argument -> IO Int8
+argumentReadVInt8 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int8
+    return val
+
+argumentReadVUint8 :: Argument -> IO Word8
+argumentReadVUint8 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word8
+    return val
+
+argumentReadVInt16 :: Argument -> IO Int16
+argumentReadVInt16 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int16
+    return val
+
+argumentReadVUint16 :: Argument -> IO Word16
+argumentReadVUint16 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word16
+    return val
+
+argumentReadVInt32 :: Argument -> IO Int32
+argumentReadVInt32 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+argumentReadVUint32 :: Argument -> IO Word32
+argumentReadVUint32 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+argumentReadVInt64 :: Argument -> IO Int64
+argumentReadVInt64 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int64
+    return val
+
+argumentReadVUint64 :: Argument -> IO Word64
+argumentReadVUint64 s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word64
+    return val
+
+argumentReadVFloat :: Argument -> IO Float
+argumentReadVFloat s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CFloat
+    let val' = realToFrac val
+    return val'
+
+argumentReadVDouble :: Argument -> IO Double
+argumentReadVDouble s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CDouble
+    let val' = realToFrac val
+    return val'
+
+argumentReadVShort :: Argument -> IO Int16
+argumentReadVShort s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int16
+    return val
+
+argumentReadVUshort :: Argument -> IO Word16
+argumentReadVUshort s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word16
+    return val
+
+argumentReadVInt :: Argument -> IO Int32
+argumentReadVInt s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int32
+    return val
+
+argumentReadVUint :: Argument -> IO Word32
+argumentReadVUint s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word32
+    return val
+
+argumentReadVLong :: Argument -> IO Int64
+argumentReadVLong s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int64
+    return val
+
+argumentReadVUlong :: Argument -> IO Word64
+argumentReadVUlong s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word64
+    return val
+
+argumentReadVSsize :: Argument -> IO Int64
+argumentReadVSsize s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Int64
+    return val
+
+argumentReadVSize :: Argument -> IO Word64
+argumentReadVSize s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO Word64
+    return val
+
+argumentReadVString :: Argument -> IO T.Text
+argumentReadVString s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO CString
+    val' <- cstringToText val
+    return val'
+
+argumentReadVPointer :: Argument -> IO (Ptr ())
+argumentReadVPointer s = withManagedPtr s $ \ptr -> do
+    val <- peek (ptr `plusPtr` 0) :: IO (Ptr ())
+    return val
+
+
diff --git a/GI/GIRepository/Unions/Argument.hs-boot b/GI/GIRepository/Unions/Argument.hs-boot
new file mode 100644
--- /dev/null
+++ b/GI/GIRepository/Unions/Argument.hs-boot
@@ -0,0 +1,10 @@
+module GI.GIRepository.Unions.Argument 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 Argument = Argument (ForeignPtr Argument)
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,456 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+import Distribution.Simple
+main = defaultMain
diff --git a/gi-girepository.cabal b/gi-girepository.cabal
new file mode 100644
--- /dev/null
+++ b/gi-girepository.cabal
@@ -0,0 +1,42 @@
+-- Autogenerated, do not edit.
+name:               gi-girepository
+version:            0.1.44.12
+synopsis:           GIRepository bindings
+description:        Bindings for GIRepository, autogenerated by haskell-gi.
+homepage:           https://github.com/haskell-gi/haskell-gi
+license:            LGPL-2.1
+license-file:       LICENSE
+author:             Will Thompson, Iñaki García Etxebarria and Jonas Platte
+maintainer:         Iñaki García Etxebarria (garetxe@gmail.com)
+category:           Bindings
+build-type:         Simple
+cabal-version:      >=1.10
+
+library
+    default-language:   Haskell2010
+    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.GIRepository.Types
+                        GI.GIRepository
+                        GI.GIRepository.Callbacks
+                        GI.GIRepository.Enums
+                        GI.GIRepository.Flags
+                        GI.GIRepository.Functions
+                        GI.GIRepository.Objects
+                        GI.GIRepository.Objects.Repository
+                        GI.GIRepository.Structs
+                        GI.GIRepository.Structs.AttributeIter
+                        GI.GIRepository.Structs.BaseInfo
+                        GI.GIRepository.Structs.Typelib
+                        GI.GIRepository.Structs.UnresolvedInfo
+                        GI.GIRepository.Unions
+                        GI.GIRepository.Unions.Argument
+    pkgconfig-depends:  gobject-introspection-1.0 >= 1.44
+    build-depends: base >= 4.7 && <5,
+        haskell-gi-base >= 0.12 && < 1,
+        gi-gobject >= 0.2.44.12 && < 0.2.45,
+        bytestring >= 0.10,
+        containers >= 0.5,
+        text >= 1.0,
+        transformers >= 0.3
