{- |
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.Gtk.Callbacks
    ( 

 -- * Signals
-- ** AccelGroupActivate #signal:AccelGroupActivate#
    AccelGroupActivate                      ,
    C_AccelGroupActivate                    ,
    dynamic_AccelGroupActivate              ,
    genClosure_AccelGroupActivate           ,
    mk_AccelGroupActivate                   ,
    noAccelGroupActivate                    ,
    wrap_AccelGroupActivate                 ,


-- ** AccelGroupFindFunc #signal:AccelGroupFindFunc#
    AccelGroupFindFunc                      ,
    AccelGroupFindFunc_WithClosures         ,
    C_AccelGroupFindFunc                    ,
    drop_closures_AccelGroupFindFunc        ,
    dynamic_AccelGroupFindFunc              ,
    genClosure_AccelGroupFindFunc           ,
    mk_AccelGroupFindFunc                   ,
    noAccelGroupFindFunc                    ,
    noAccelGroupFindFunc_WithClosures       ,
    wrap_AccelGroupFindFunc                 ,


-- ** AccelMapForeach #signal:AccelMapForeach#
    AccelMapForeach                         ,
    C_AccelMapForeach                       ,
    dynamic_AccelMapForeach                 ,
    genClosure_AccelMapForeach              ,
    mk_AccelMapForeach                      ,
    noAccelMapForeach                       ,
    wrap_AccelMapForeach                    ,


-- ** AssistantPageFunc #signal:AssistantPageFunc#
    AssistantPageFunc                       ,
    AssistantPageFunc_WithClosures          ,
    C_AssistantPageFunc                     ,
    drop_closures_AssistantPageFunc         ,
    dynamic_AssistantPageFunc               ,
    genClosure_AssistantPageFunc            ,
    mk_AssistantPageFunc                    ,
    noAssistantPageFunc                     ,
    noAssistantPageFunc_WithClosures        ,
    wrap_AssistantPageFunc                  ,


-- ** BuilderConnectFunc #signal:BuilderConnectFunc#
    BuilderConnectFunc                      ,
    BuilderConnectFunc_WithClosures         ,
    C_BuilderConnectFunc                    ,
    drop_closures_BuilderConnectFunc        ,
    dynamic_BuilderConnectFunc              ,
    genClosure_BuilderConnectFunc           ,
    mk_BuilderConnectFunc                   ,
    noBuilderConnectFunc                    ,
    noBuilderConnectFunc_WithClosures       ,
    wrap_BuilderConnectFunc                 ,


-- ** CalendarDetailFunc #signal:CalendarDetailFunc#
    C_CalendarDetailFunc                    ,
    CalendarDetailFunc                      ,
    CalendarDetailFunc_WithClosures         ,
    drop_closures_CalendarDetailFunc        ,
    dynamic_CalendarDetailFunc              ,
    genClosure_CalendarDetailFunc           ,
    mk_CalendarDetailFunc                   ,
    noCalendarDetailFunc                    ,
    noCalendarDetailFunc_WithClosures       ,
    wrap_CalendarDetailFunc                 ,


-- ** Callback #signal:Callback#
    C_Callback                              ,
    Callback                                ,
    Callback_WithClosures                   ,
    drop_closures_Callback                  ,
    dynamic_Callback                        ,
    genClosure_Callback                     ,
    mk_Callback                             ,
    noCallback                              ,
    noCallback_WithClosures                 ,
    wrap_Callback                           ,


-- ** CellAllocCallback #signal:CellAllocCallback#
    C_CellAllocCallback                     ,
    CellAllocCallback                       ,
    CellAllocCallback_WithClosures          ,
    drop_closures_CellAllocCallback         ,
    dynamic_CellAllocCallback               ,
    genClosure_CellAllocCallback            ,
    mk_CellAllocCallback                    ,
    noCellAllocCallback                     ,
    noCellAllocCallback_WithClosures        ,
    wrap_CellAllocCallback                  ,


-- ** CellCallback #signal:CellCallback#
    C_CellCallback                          ,
    CellCallback                            ,
    CellCallback_WithClosures               ,
    drop_closures_CellCallback              ,
    dynamic_CellCallback                    ,
    genClosure_CellCallback                 ,
    mk_CellCallback                         ,
    noCellCallback                          ,
    noCellCallback_WithClosures             ,
    wrap_CellCallback                       ,


-- ** CellLayoutDataFunc #signal:CellLayoutDataFunc#
    C_CellLayoutDataFunc                    ,
    CellLayoutDataFunc                      ,
    CellLayoutDataFunc_WithClosures         ,
    drop_closures_CellLayoutDataFunc        ,
    dynamic_CellLayoutDataFunc              ,
    genClosure_CellLayoutDataFunc           ,
    mk_CellLayoutDataFunc                   ,
    noCellLayoutDataFunc                    ,
    noCellLayoutDataFunc_WithClosures       ,
    wrap_CellLayoutDataFunc                 ,


-- ** ClipboardClearFunc #signal:ClipboardClearFunc#
    C_ClipboardClearFunc                    ,
    ClipboardClearFunc                      ,
    dynamic_ClipboardClearFunc              ,
    genClosure_ClipboardClearFunc           ,
    mk_ClipboardClearFunc                   ,
    noClipboardClearFunc                    ,
    wrap_ClipboardClearFunc                 ,


-- ** ClipboardGetFunc #signal:ClipboardGetFunc#
    C_ClipboardGetFunc                      ,
    ClipboardGetFunc                        ,
    dynamic_ClipboardGetFunc                ,
    genClosure_ClipboardGetFunc             ,
    mk_ClipboardGetFunc                     ,
    noClipboardGetFunc                      ,
    wrap_ClipboardGetFunc                   ,


-- ** ClipboardImageReceivedFunc #signal:ClipboardImageReceivedFunc#
    C_ClipboardImageReceivedFunc            ,
    ClipboardImageReceivedFunc              ,
    ClipboardImageReceivedFunc_WithClosures ,
    drop_closures_ClipboardImageReceivedFunc,
    dynamic_ClipboardImageReceivedFunc      ,
    genClosure_ClipboardImageReceivedFunc   ,
    mk_ClipboardImageReceivedFunc           ,
    noClipboardImageReceivedFunc            ,
    noClipboardImageReceivedFunc_WithClosures,
    wrap_ClipboardImageReceivedFunc         ,


-- ** ClipboardReceivedFunc #signal:ClipboardReceivedFunc#
    C_ClipboardReceivedFunc                 ,
    ClipboardReceivedFunc                   ,
    ClipboardReceivedFunc_WithClosures      ,
    drop_closures_ClipboardReceivedFunc     ,
    dynamic_ClipboardReceivedFunc           ,
    genClosure_ClipboardReceivedFunc        ,
    mk_ClipboardReceivedFunc                ,
    noClipboardReceivedFunc                 ,
    noClipboardReceivedFunc_WithClosures    ,
    wrap_ClipboardReceivedFunc              ,


-- ** ClipboardRichTextReceivedFunc #signal:ClipboardRichTextReceivedFunc#
    C_ClipboardRichTextReceivedFunc         ,
    ClipboardRichTextReceivedFunc           ,
    ClipboardRichTextReceivedFunc_WithClosures,
    drop_closures_ClipboardRichTextReceivedFunc,
    dynamic_ClipboardRichTextReceivedFunc   ,
    genClosure_ClipboardRichTextReceivedFunc,
    mk_ClipboardRichTextReceivedFunc        ,
    noClipboardRichTextReceivedFunc         ,
    noClipboardRichTextReceivedFunc_WithClosures,
    wrap_ClipboardRichTextReceivedFunc      ,


-- ** ClipboardTargetsReceivedFunc #signal:ClipboardTargetsReceivedFunc#
    C_ClipboardTargetsReceivedFunc          ,
    ClipboardTargetsReceivedFunc            ,
    ClipboardTargetsReceivedFunc_WithClosures,
    drop_closures_ClipboardTargetsReceivedFunc,
    dynamic_ClipboardTargetsReceivedFunc    ,
    genClosure_ClipboardTargetsReceivedFunc ,
    mk_ClipboardTargetsReceivedFunc         ,
    noClipboardTargetsReceivedFunc          ,
    noClipboardTargetsReceivedFunc_WithClosures,
    wrap_ClipboardTargetsReceivedFunc       ,


-- ** ClipboardTextReceivedFunc #signal:ClipboardTextReceivedFunc#
    C_ClipboardTextReceivedFunc             ,
    ClipboardTextReceivedFunc               ,
    ClipboardTextReceivedFunc_WithClosures  ,
    drop_closures_ClipboardTextReceivedFunc ,
    dynamic_ClipboardTextReceivedFunc       ,
    genClosure_ClipboardTextReceivedFunc    ,
    mk_ClipboardTextReceivedFunc            ,
    noClipboardTextReceivedFunc             ,
    noClipboardTextReceivedFunc_WithClosures,
    wrap_ClipboardTextReceivedFunc          ,


-- ** ClipboardURIReceivedFunc #signal:ClipboardURIReceivedFunc#
    C_ClipboardURIReceivedFunc              ,
    ClipboardURIReceivedFunc                ,
    ClipboardURIReceivedFunc_WithClosures   ,
    drop_closures_ClipboardURIReceivedFunc  ,
    dynamic_ClipboardURIReceivedFunc        ,
    genClosure_ClipboardURIReceivedFunc     ,
    mk_ClipboardURIReceivedFunc             ,
    noClipboardURIReceivedFunc              ,
    noClipboardURIReceivedFunc_WithClosures ,
    wrap_ClipboardURIReceivedFunc           ,


-- ** ColorSelectionChangePaletteFunc #signal:ColorSelectionChangePaletteFunc#
    C_ColorSelectionChangePaletteFunc       ,
    ColorSelectionChangePaletteFunc         ,
    dynamic_ColorSelectionChangePaletteFunc ,
    genClosure_ColorSelectionChangePaletteFunc,
    mk_ColorSelectionChangePaletteFunc      ,
    noColorSelectionChangePaletteFunc       ,
    wrap_ColorSelectionChangePaletteFunc    ,


-- ** ColorSelectionChangePaletteWithScreenFunc #signal:ColorSelectionChangePaletteWithScreenFunc#
    C_ColorSelectionChangePaletteWithScreenFunc,
    ColorSelectionChangePaletteWithScreenFunc,
    dynamic_ColorSelectionChangePaletteWithScreenFunc,
    genClosure_ColorSelectionChangePaletteWithScreenFunc,
    mk_ColorSelectionChangePaletteWithScreenFunc,
    noColorSelectionChangePaletteWithScreenFunc,
    wrap_ColorSelectionChangePaletteWithScreenFunc,


-- ** EntryCompletionMatchFunc #signal:EntryCompletionMatchFunc#
    C_EntryCompletionMatchFunc              ,
    EntryCompletionMatchFunc                ,
    EntryCompletionMatchFunc_WithClosures   ,
    drop_closures_EntryCompletionMatchFunc  ,
    dynamic_EntryCompletionMatchFunc        ,
    genClosure_EntryCompletionMatchFunc     ,
    mk_EntryCompletionMatchFunc             ,
    noEntryCompletionMatchFunc              ,
    noEntryCompletionMatchFunc_WithClosures ,
    wrap_EntryCompletionMatchFunc           ,


-- ** FileFilterFunc #signal:FileFilterFunc#
    C_FileFilterFunc                        ,
    FileFilterFunc                          ,
    FileFilterFunc_WithClosures             ,
    drop_closures_FileFilterFunc            ,
    dynamic_FileFilterFunc                  ,
    genClosure_FileFilterFunc               ,
    mk_FileFilterFunc                       ,
    noFileFilterFunc                        ,
    noFileFilterFunc_WithClosures           ,
    wrap_FileFilterFunc                     ,


-- ** FlowBoxCreateWidgetFunc #signal:FlowBoxCreateWidgetFunc#
    C_FlowBoxCreateWidgetFunc               ,
    FlowBoxCreateWidgetFunc                 ,
    FlowBoxCreateWidgetFunc_WithClosures    ,
    drop_closures_FlowBoxCreateWidgetFunc   ,
    dynamic_FlowBoxCreateWidgetFunc         ,
    genClosure_FlowBoxCreateWidgetFunc      ,
    mk_FlowBoxCreateWidgetFunc              ,
    noFlowBoxCreateWidgetFunc               ,
    noFlowBoxCreateWidgetFunc_WithClosures  ,
    wrap_FlowBoxCreateWidgetFunc            ,


-- ** FlowBoxFilterFunc #signal:FlowBoxFilterFunc#
    C_FlowBoxFilterFunc                     ,
    FlowBoxFilterFunc                       ,
    FlowBoxFilterFunc_WithClosures          ,
    drop_closures_FlowBoxFilterFunc         ,
    dynamic_FlowBoxFilterFunc               ,
    genClosure_FlowBoxFilterFunc            ,
    mk_FlowBoxFilterFunc                    ,
    noFlowBoxFilterFunc                     ,
    noFlowBoxFilterFunc_WithClosures        ,
    wrap_FlowBoxFilterFunc                  ,


-- ** FlowBoxForeachFunc #signal:FlowBoxForeachFunc#
    C_FlowBoxForeachFunc                    ,
    FlowBoxForeachFunc                      ,
    FlowBoxForeachFunc_WithClosures         ,
    drop_closures_FlowBoxForeachFunc        ,
    dynamic_FlowBoxForeachFunc              ,
    genClosure_FlowBoxForeachFunc           ,
    mk_FlowBoxForeachFunc                   ,
    noFlowBoxForeachFunc                    ,
    noFlowBoxForeachFunc_WithClosures       ,
    wrap_FlowBoxForeachFunc                 ,


-- ** FlowBoxSortFunc #signal:FlowBoxSortFunc#
    C_FlowBoxSortFunc                       ,
    FlowBoxSortFunc                         ,
    FlowBoxSortFunc_WithClosures            ,
    drop_closures_FlowBoxSortFunc           ,
    dynamic_FlowBoxSortFunc                 ,
    genClosure_FlowBoxSortFunc              ,
    mk_FlowBoxSortFunc                      ,
    noFlowBoxSortFunc                       ,
    noFlowBoxSortFunc_WithClosures          ,
    wrap_FlowBoxSortFunc                    ,


-- ** FontFilterFunc #signal:FontFilterFunc#
    C_FontFilterFunc                        ,
    FontFilterFunc                          ,
    FontFilterFunc_WithClosures             ,
    drop_closures_FontFilterFunc            ,
    dynamic_FontFilterFunc                  ,
    genClosure_FontFilterFunc               ,
    mk_FontFilterFunc                       ,
    noFontFilterFunc                        ,
    noFontFilterFunc_WithClosures           ,
    wrap_FontFilterFunc                     ,


-- ** IconViewForeachFunc #signal:IconViewForeachFunc#
    C_IconViewForeachFunc                   ,
    IconViewForeachFunc                     ,
    IconViewForeachFunc_WithClosures        ,
    drop_closures_IconViewForeachFunc       ,
    dynamic_IconViewForeachFunc             ,
    genClosure_IconViewForeachFunc          ,
    mk_IconViewForeachFunc                  ,
    noIconViewForeachFunc                   ,
    noIconViewForeachFunc_WithClosures      ,
    wrap_IconViewForeachFunc                ,


-- ** KeySnoopFunc #signal:KeySnoopFunc#
    C_KeySnoopFunc                          ,
    KeySnoopFunc                            ,
    KeySnoopFunc_WithClosures               ,
    drop_closures_KeySnoopFunc              ,
    dynamic_KeySnoopFunc                    ,
    genClosure_KeySnoopFunc                 ,
    mk_KeySnoopFunc                         ,
    noKeySnoopFunc                          ,
    noKeySnoopFunc_WithClosures             ,
    wrap_KeySnoopFunc                       ,


-- ** ListBoxCreateWidgetFunc #signal:ListBoxCreateWidgetFunc#
    C_ListBoxCreateWidgetFunc               ,
    ListBoxCreateWidgetFunc                 ,
    ListBoxCreateWidgetFunc_WithClosures    ,
    drop_closures_ListBoxCreateWidgetFunc   ,
    dynamic_ListBoxCreateWidgetFunc         ,
    genClosure_ListBoxCreateWidgetFunc      ,
    mk_ListBoxCreateWidgetFunc              ,
    noListBoxCreateWidgetFunc               ,
    noListBoxCreateWidgetFunc_WithClosures  ,
    wrap_ListBoxCreateWidgetFunc            ,


-- ** ListBoxFilterFunc #signal:ListBoxFilterFunc#
    C_ListBoxFilterFunc                     ,
    ListBoxFilterFunc                       ,
    ListBoxFilterFunc_WithClosures          ,
    drop_closures_ListBoxFilterFunc         ,
    dynamic_ListBoxFilterFunc               ,
    genClosure_ListBoxFilterFunc            ,
    mk_ListBoxFilterFunc                    ,
    noListBoxFilterFunc                     ,
    noListBoxFilterFunc_WithClosures        ,
    wrap_ListBoxFilterFunc                  ,


-- ** ListBoxForeachFunc #signal:ListBoxForeachFunc#
    C_ListBoxForeachFunc                    ,
    ListBoxForeachFunc                      ,
    ListBoxForeachFunc_WithClosures         ,
    drop_closures_ListBoxForeachFunc        ,
    dynamic_ListBoxForeachFunc              ,
    genClosure_ListBoxForeachFunc           ,
    mk_ListBoxForeachFunc                   ,
    noListBoxForeachFunc                    ,
    noListBoxForeachFunc_WithClosures       ,
    wrap_ListBoxForeachFunc                 ,


-- ** ListBoxSortFunc #signal:ListBoxSortFunc#
    C_ListBoxSortFunc                       ,
    ListBoxSortFunc                         ,
    ListBoxSortFunc_WithClosures            ,
    drop_closures_ListBoxSortFunc           ,
    dynamic_ListBoxSortFunc                 ,
    genClosure_ListBoxSortFunc              ,
    mk_ListBoxSortFunc                      ,
    noListBoxSortFunc                       ,
    noListBoxSortFunc_WithClosures          ,
    wrap_ListBoxSortFunc                    ,


-- ** ListBoxUpdateHeaderFunc #signal:ListBoxUpdateHeaderFunc#
    C_ListBoxUpdateHeaderFunc               ,
    ListBoxUpdateHeaderFunc                 ,
    ListBoxUpdateHeaderFunc_WithClosures    ,
    drop_closures_ListBoxUpdateHeaderFunc   ,
    dynamic_ListBoxUpdateHeaderFunc         ,
    genClosure_ListBoxUpdateHeaderFunc      ,
    mk_ListBoxUpdateHeaderFunc              ,
    noListBoxUpdateHeaderFunc               ,
    noListBoxUpdateHeaderFunc_WithClosures  ,
    wrap_ListBoxUpdateHeaderFunc            ,


-- ** MenuDetachFunc #signal:MenuDetachFunc#
    C_MenuDetachFunc                        ,
    MenuDetachFunc                          ,
    dynamic_MenuDetachFunc                  ,
    genClosure_MenuDetachFunc               ,
    mk_MenuDetachFunc                       ,
    noMenuDetachFunc                        ,
    wrap_MenuDetachFunc                     ,


-- ** MenuPositionFunc #signal:MenuPositionFunc#
    C_MenuPositionFunc                      ,
    MenuPositionFunc                        ,
    MenuPositionFunc_WithClosures           ,
    drop_closures_MenuPositionFunc          ,
    dynamic_MenuPositionFunc                ,
    genClosure_MenuPositionFunc             ,
    mk_MenuPositionFunc                     ,
    noMenuPositionFunc                      ,
    noMenuPositionFunc_WithClosures         ,
    wrap_MenuPositionFunc                   ,


-- ** ModuleDisplayInitFunc #signal:ModuleDisplayInitFunc#
    C_ModuleDisplayInitFunc                 ,
    ModuleDisplayInitFunc                   ,
    dynamic_ModuleDisplayInitFunc           ,
    genClosure_ModuleDisplayInitFunc        ,
    mk_ModuleDisplayInitFunc                ,
    noModuleDisplayInitFunc                 ,
    wrap_ModuleDisplayInitFunc              ,


-- ** ModuleInitFunc #signal:ModuleInitFunc#
    C_ModuleInitFunc                        ,
    ModuleInitFunc                          ,
    dynamic_ModuleInitFunc                  ,
    genClosure_ModuleInitFunc               ,
    mk_ModuleInitFunc                       ,
    noModuleInitFunc                        ,
    wrap_ModuleInitFunc                     ,


-- ** PageSetupDoneFunc #signal:PageSetupDoneFunc#
    C_PageSetupDoneFunc                     ,
    PageSetupDoneFunc                       ,
    PageSetupDoneFunc_WithClosures          ,
    drop_closures_PageSetupDoneFunc         ,
    dynamic_PageSetupDoneFunc               ,
    genClosure_PageSetupDoneFunc            ,
    mk_PageSetupDoneFunc                    ,
    noPageSetupDoneFunc                     ,
    noPageSetupDoneFunc_WithClosures        ,
    wrap_PageSetupDoneFunc                  ,


-- ** PrintSettingsFunc #signal:PrintSettingsFunc#
    C_PrintSettingsFunc                     ,
    PrintSettingsFunc                       ,
    PrintSettingsFunc_WithClosures          ,
    drop_closures_PrintSettingsFunc         ,
    dynamic_PrintSettingsFunc               ,
    genClosure_PrintSettingsFunc            ,
    mk_PrintSettingsFunc                    ,
    noPrintSettingsFunc                     ,
    noPrintSettingsFunc_WithClosures        ,
    wrap_PrintSettingsFunc                  ,


-- ** RcPropertyParser #signal:RcPropertyParser#
    C_RcPropertyParser                      ,
    RcPropertyParser                        ,
    dynamic_RcPropertyParser                ,
    genClosure_RcPropertyParser             ,
    mk_RcPropertyParser                     ,
    noRcPropertyParser                      ,
    wrap_RcPropertyParser                   ,


-- ** RecentFilterFunc #signal:RecentFilterFunc#
    C_RecentFilterFunc                      ,
    RecentFilterFunc                        ,
    RecentFilterFunc_WithClosures           ,
    drop_closures_RecentFilterFunc          ,
    dynamic_RecentFilterFunc                ,
    genClosure_RecentFilterFunc             ,
    mk_RecentFilterFunc                     ,
    noRecentFilterFunc                      ,
    noRecentFilterFunc_WithClosures         ,
    wrap_RecentFilterFunc                   ,


-- ** RecentSortFunc #signal:RecentSortFunc#
    C_RecentSortFunc                        ,
    RecentSortFunc                          ,
    RecentSortFunc_WithClosures             ,
    drop_closures_RecentSortFunc            ,
    dynamic_RecentSortFunc                  ,
    genClosure_RecentSortFunc               ,
    mk_RecentSortFunc                       ,
    noRecentSortFunc                        ,
    noRecentSortFunc_WithClosures           ,
    wrap_RecentSortFunc                     ,


-- ** StylePropertyParser #signal:StylePropertyParser#
    C_StylePropertyParser                   ,
    StylePropertyParser                     ,
    dynamic_StylePropertyParser             ,
    mk_StylePropertyParser                  ,
    noStylePropertyParser                   ,


-- ** TextBufferDeserializeFunc #signal:TextBufferDeserializeFunc#
    C_TextBufferDeserializeFunc             ,
    TextBufferDeserializeFunc               ,
    TextBufferDeserializeFunc_WithClosures  ,
    drop_closures_TextBufferDeserializeFunc ,
    dynamic_TextBufferDeserializeFunc       ,
    mk_TextBufferDeserializeFunc            ,
    noTextBufferDeserializeFunc             ,
    noTextBufferDeserializeFunc_WithClosures,


-- ** TextBufferSerializeFunc #signal:TextBufferSerializeFunc#
    C_TextBufferSerializeFunc               ,
    TextBufferSerializeFunc                 ,
    TextBufferSerializeFunc_WithClosures    ,
    drop_closures_TextBufferSerializeFunc   ,
    dynamic_TextBufferSerializeFunc         ,
    genClosure_TextBufferSerializeFunc      ,
    mk_TextBufferSerializeFunc              ,
    noTextBufferSerializeFunc               ,
    noTextBufferSerializeFunc_WithClosures  ,
    wrap_TextBufferSerializeFunc            ,


-- ** TextCharPredicate #signal:TextCharPredicate#
    C_TextCharPredicate                     ,
    TextCharPredicate                       ,
    TextCharPredicate_WithClosures          ,
    drop_closures_TextCharPredicate         ,
    dynamic_TextCharPredicate               ,
    genClosure_TextCharPredicate            ,
    mk_TextCharPredicate                    ,
    noTextCharPredicate                     ,
    noTextCharPredicate_WithClosures        ,
    wrap_TextCharPredicate                  ,


-- ** TextTagTableForeach #signal:TextTagTableForeach#
    C_TextTagTableForeach                   ,
    TextTagTableForeach                     ,
    TextTagTableForeach_WithClosures        ,
    drop_closures_TextTagTableForeach       ,
    dynamic_TextTagTableForeach             ,
    genClosure_TextTagTableForeach          ,
    mk_TextTagTableForeach                  ,
    noTextTagTableForeach                   ,
    noTextTagTableForeach_WithClosures      ,
    wrap_TextTagTableForeach                ,


-- ** TickCallback #signal:TickCallback#
    C_TickCallback                          ,
    TickCallback                            ,
    TickCallback_WithClosures               ,
    drop_closures_TickCallback              ,
    dynamic_TickCallback                    ,
    genClosure_TickCallback                 ,
    mk_TickCallback                         ,
    noTickCallback                          ,
    noTickCallback_WithClosures             ,
    wrap_TickCallback                       ,


-- ** TranslateFunc #signal:TranslateFunc#
    C_TranslateFunc                         ,
    TranslateFunc                           ,
    TranslateFunc_WithClosures              ,
    drop_closures_TranslateFunc             ,
    dynamic_TranslateFunc                   ,
    genClosure_TranslateFunc                ,
    mk_TranslateFunc                        ,
    noTranslateFunc                         ,
    noTranslateFunc_WithClosures            ,
    wrap_TranslateFunc                      ,


-- ** TreeCellDataFunc #signal:TreeCellDataFunc#
    C_TreeCellDataFunc                      ,
    TreeCellDataFunc                        ,
    TreeCellDataFunc_WithClosures           ,
    drop_closures_TreeCellDataFunc          ,
    dynamic_TreeCellDataFunc                ,
    genClosure_TreeCellDataFunc             ,
    mk_TreeCellDataFunc                     ,
    noTreeCellDataFunc                      ,
    noTreeCellDataFunc_WithClosures         ,
    wrap_TreeCellDataFunc                   ,


-- ** TreeDestroyCountFunc #signal:TreeDestroyCountFunc#
    C_TreeDestroyCountFunc                  ,
    TreeDestroyCountFunc                    ,
    TreeDestroyCountFunc_WithClosures       ,
    drop_closures_TreeDestroyCountFunc      ,
    dynamic_TreeDestroyCountFunc            ,
    genClosure_TreeDestroyCountFunc         ,
    mk_TreeDestroyCountFunc                 ,
    noTreeDestroyCountFunc                  ,
    noTreeDestroyCountFunc_WithClosures     ,
    wrap_TreeDestroyCountFunc               ,


-- ** TreeIterCompareFunc #signal:TreeIterCompareFunc#
    C_TreeIterCompareFunc                   ,
    TreeIterCompareFunc                     ,
    TreeIterCompareFunc_WithClosures        ,
    drop_closures_TreeIterCompareFunc       ,
    dynamic_TreeIterCompareFunc             ,
    genClosure_TreeIterCompareFunc          ,
    mk_TreeIterCompareFunc                  ,
    noTreeIterCompareFunc                   ,
    noTreeIterCompareFunc_WithClosures      ,
    wrap_TreeIterCompareFunc                ,


-- ** TreeModelFilterVisibleFunc #signal:TreeModelFilterVisibleFunc#
    C_TreeModelFilterVisibleFunc            ,
    TreeModelFilterVisibleFunc              ,
    TreeModelFilterVisibleFunc_WithClosures ,
    drop_closures_TreeModelFilterVisibleFunc,
    dynamic_TreeModelFilterVisibleFunc      ,
    genClosure_TreeModelFilterVisibleFunc   ,
    mk_TreeModelFilterVisibleFunc           ,
    noTreeModelFilterVisibleFunc            ,
    noTreeModelFilterVisibleFunc_WithClosures,
    wrap_TreeModelFilterVisibleFunc         ,


-- ** TreeModelForeachFunc #signal:TreeModelForeachFunc#
    C_TreeModelForeachFunc                  ,
    TreeModelForeachFunc                    ,
    TreeModelForeachFunc_WithClosures       ,
    drop_closures_TreeModelForeachFunc      ,
    dynamic_TreeModelForeachFunc            ,
    genClosure_TreeModelForeachFunc         ,
    mk_TreeModelForeachFunc                 ,
    noTreeModelForeachFunc                  ,
    noTreeModelForeachFunc_WithClosures     ,
    wrap_TreeModelForeachFunc               ,


-- ** TreeSelectionForeachFunc #signal:TreeSelectionForeachFunc#
    C_TreeSelectionForeachFunc              ,
    TreeSelectionForeachFunc                ,
    TreeSelectionForeachFunc_WithClosures   ,
    drop_closures_TreeSelectionForeachFunc  ,
    dynamic_TreeSelectionForeachFunc        ,
    genClosure_TreeSelectionForeachFunc     ,
    mk_TreeSelectionForeachFunc             ,
    noTreeSelectionForeachFunc              ,
    noTreeSelectionForeachFunc_WithClosures ,
    wrap_TreeSelectionForeachFunc           ,


-- ** TreeSelectionFunc #signal:TreeSelectionFunc#
    C_TreeSelectionFunc                     ,
    TreeSelectionFunc                       ,
    TreeSelectionFunc_WithClosures          ,
    drop_closures_TreeSelectionFunc         ,
    dynamic_TreeSelectionFunc               ,
    genClosure_TreeSelectionFunc            ,
    mk_TreeSelectionFunc                    ,
    noTreeSelectionFunc                     ,
    noTreeSelectionFunc_WithClosures        ,
    wrap_TreeSelectionFunc                  ,


-- ** TreeViewColumnDropFunc #signal:TreeViewColumnDropFunc#
    C_TreeViewColumnDropFunc                ,
    TreeViewColumnDropFunc                  ,
    TreeViewColumnDropFunc_WithClosures     ,
    drop_closures_TreeViewColumnDropFunc    ,
    dynamic_TreeViewColumnDropFunc          ,
    genClosure_TreeViewColumnDropFunc       ,
    mk_TreeViewColumnDropFunc               ,
    noTreeViewColumnDropFunc                ,
    noTreeViewColumnDropFunc_WithClosures   ,
    wrap_TreeViewColumnDropFunc             ,


-- ** TreeViewMappingFunc #signal:TreeViewMappingFunc#
    C_TreeViewMappingFunc                   ,
    TreeViewMappingFunc                     ,
    TreeViewMappingFunc_WithClosures        ,
    drop_closures_TreeViewMappingFunc       ,
    dynamic_TreeViewMappingFunc             ,
    genClosure_TreeViewMappingFunc          ,
    mk_TreeViewMappingFunc                  ,
    noTreeViewMappingFunc                   ,
    noTreeViewMappingFunc_WithClosures      ,
    wrap_TreeViewMappingFunc                ,


-- ** TreeViewRowSeparatorFunc #signal:TreeViewRowSeparatorFunc#
    C_TreeViewRowSeparatorFunc              ,
    TreeViewRowSeparatorFunc                ,
    TreeViewRowSeparatorFunc_WithClosures   ,
    drop_closures_TreeViewRowSeparatorFunc  ,
    dynamic_TreeViewRowSeparatorFunc        ,
    genClosure_TreeViewRowSeparatorFunc     ,
    mk_TreeViewRowSeparatorFunc             ,
    noTreeViewRowSeparatorFunc              ,
    noTreeViewRowSeparatorFunc_WithClosures ,
    wrap_TreeViewRowSeparatorFunc           ,


-- ** TreeViewSearchEqualFunc #signal:TreeViewSearchEqualFunc#
    C_TreeViewSearchEqualFunc               ,
    TreeViewSearchEqualFunc                 ,
    TreeViewSearchEqualFunc_WithClosures    ,
    drop_closures_TreeViewSearchEqualFunc   ,
    dynamic_TreeViewSearchEqualFunc         ,
    genClosure_TreeViewSearchEqualFunc      ,
    mk_TreeViewSearchEqualFunc              ,
    noTreeViewSearchEqualFunc               ,
    noTreeViewSearchEqualFunc_WithClosures  ,
    wrap_TreeViewSearchEqualFunc            ,


-- ** TreeViewSearchPositionFunc #signal:TreeViewSearchPositionFunc#
    C_TreeViewSearchPositionFunc            ,
    TreeViewSearchPositionFunc              ,
    TreeViewSearchPositionFunc_WithClosures ,
    drop_closures_TreeViewSearchPositionFunc,
    dynamic_TreeViewSearchPositionFunc      ,
    genClosure_TreeViewSearchPositionFunc   ,
    mk_TreeViewSearchPositionFunc           ,
    noTreeViewSearchPositionFunc            ,
    noTreeViewSearchPositionFunc_WithClosures,
    wrap_TreeViewSearchPositionFunc         ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GLib.Structs.String as GLib.String
import qualified GI.GObject.Flags as GObject.Flags
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Flags as Gdk.Flags
import qualified GI.Gdk.Objects.Display as Gdk.Display
import qualified GI.Gdk.Objects.FrameClock as Gdk.FrameClock
import qualified GI.Gdk.Objects.Screen as Gdk.Screen
import qualified GI.Gdk.Structs.Atom as Gdk.Atom
import qualified GI.Gdk.Structs.Color as Gdk.Color
import qualified GI.Gdk.Structs.EventKey as Gdk.EventKey
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
import qualified GI.GdkPixbuf.Objects.Pixbuf as GdkPixbuf.Pixbuf
import {-# SOURCE #-} qualified GI.Gtk.Interfaces.CellLayout as Gtk.CellLayout
import {-# SOURCE #-} qualified GI.Gtk.Interfaces.TreeModel as Gtk.TreeModel
import {-# SOURCE #-} qualified GI.Gtk.Objects.AccelGroup as Gtk.AccelGroup
import {-# SOURCE #-} qualified GI.Gtk.Objects.Builder as Gtk.Builder
import {-# SOURCE #-} qualified GI.Gtk.Objects.Calendar as Gtk.Calendar
import {-# SOURCE #-} qualified GI.Gtk.Objects.CellRenderer as Gtk.CellRenderer
import {-# SOURCE #-} qualified GI.Gtk.Objects.Clipboard as Gtk.Clipboard
import {-# SOURCE #-} qualified GI.Gtk.Objects.EntryCompletion as Gtk.EntryCompletion
import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBox as Gtk.FlowBox
import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBoxChild as Gtk.FlowBoxChild
import {-# SOURCE #-} qualified GI.Gtk.Objects.IconView as Gtk.IconView
import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBox as Gtk.ListBox
import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBoxRow as Gtk.ListBoxRow
import {-# SOURCE #-} qualified GI.Gtk.Objects.Menu as Gtk.Menu
import {-# SOURCE #-} qualified GI.Gtk.Objects.PageSetup as Gtk.PageSetup
import {-# SOURCE #-} qualified GI.Gtk.Objects.TextBuffer as Gtk.TextBuffer
import {-# SOURCE #-} qualified GI.Gtk.Objects.TextTag as Gtk.TextTag
import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeSelection as Gtk.TreeSelection
import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeView as Gtk.TreeView
import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeViewColumn as Gtk.TreeViewColumn
import {-# SOURCE #-} qualified GI.Gtk.Objects.Widget as Gtk.Widget
import {-# SOURCE #-} qualified GI.Gtk.Structs.AccelKey as Gtk.AccelKey
import {-# SOURCE #-} qualified GI.Gtk.Structs.FileFilterInfo as Gtk.FileFilterInfo
import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentFilterInfo as Gtk.RecentFilterInfo
import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentInfo as Gtk.RecentInfo
import {-# SOURCE #-} qualified GI.Gtk.Structs.SelectionData as Gtk.SelectionData
import {-# SOURCE #-} qualified GI.Gtk.Structs.TextIter as Gtk.TextIter
import {-# SOURCE #-} qualified GI.Gtk.Structs.TreeIter as Gtk.TreeIter
import {-# SOURCE #-} qualified GI.Gtk.Structs.TreePath as Gtk.TreePath
import qualified GI.Pango.Objects.FontFace as Pango.FontFace
import qualified GI.Pango.Objects.FontFamily as Pango.FontFamily

-- callback TreeViewSearchPositionFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "search_dialog", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_TreeViewSearchPositionFunc =
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.Widget.Widget ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "search_dialog", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeViewSearchPositionFunc :: FunPtr C_TreeViewSearchPositionFunc -> C_TreeViewSearchPositionFunc

dynamic_TreeViewSearchPositionFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a, Gtk.Widget.IsWidget b) =>
    FunPtr C_TreeViewSearchPositionFunc
    -> a
    -> b
    -> Ptr ()
    -> m ()
dynamic_TreeViewSearchPositionFunc __funPtr treeView searchDialog userData = liftIO $ do
    treeView' <- unsafeManagedPtrCastPtr treeView
    searchDialog' <- unsafeManagedPtrCastPtr searchDialog
    (__dynamic_C_TreeViewSearchPositionFunc __funPtr) treeView' searchDialog' userData
    touchManagedPtr treeView
    touchManagedPtr searchDialog
    return ()

foreign import ccall "wrapper"
    mk_TreeViewSearchPositionFunc :: C_TreeViewSearchPositionFunc -> IO (FunPtr C_TreeViewSearchPositionFunc)

type TreeViewSearchPositionFunc =
    Gtk.TreeView.TreeView ->
    Gtk.Widget.Widget ->
    IO ()

noTreeViewSearchPositionFunc :: Maybe TreeViewSearchPositionFunc
noTreeViewSearchPositionFunc = Nothing

type TreeViewSearchPositionFunc_WithClosures =
    Gtk.TreeView.TreeView ->
    Gtk.Widget.Widget ->
    Ptr () ->
    IO ()

noTreeViewSearchPositionFunc_WithClosures :: Maybe TreeViewSearchPositionFunc_WithClosures
noTreeViewSearchPositionFunc_WithClosures = Nothing

drop_closures_TreeViewSearchPositionFunc :: TreeViewSearchPositionFunc -> TreeViewSearchPositionFunc_WithClosures
drop_closures_TreeViewSearchPositionFunc _f treeView searchDialog _ = _f treeView searchDialog

genClosure_TreeViewSearchPositionFunc :: TreeViewSearchPositionFunc -> IO Closure
genClosure_TreeViewSearchPositionFunc cb = do
    let cb' = drop_closures_TreeViewSearchPositionFunc cb
    let cb'' = wrap_TreeViewSearchPositionFunc Nothing cb'
    mk_TreeViewSearchPositionFunc cb'' >>= newCClosure


wrap_TreeViewSearchPositionFunc ::
    Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc)) ->
    TreeViewSearchPositionFunc_WithClosures ->
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.Widget.Widget ->
    Ptr () ->
    IO ()
wrap_TreeViewSearchPositionFunc funptrptr _cb treeView searchDialog userData = do
    treeView' <- (newObject Gtk.TreeView.TreeView) treeView
    searchDialog' <- (newObject Gtk.Widget.Widget) searchDialog
    _cb  treeView' searchDialog' userData
    maybeReleaseFunPtr funptrptr


-- callback TreeViewSearchEqualFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%FALSE if the row matches, %TRUE otherwise.", sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel being searched", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "column", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the search column set by gtk_tree_view_set_search_column()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the key string to compare with", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing the row of @model that should be compared\n with @key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "search_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data from gtk_tree_view_set_search_equal_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used for checking whether a row in @model matches\na search key string entered by the user. Note the return value\nis reversed from what you would normally expect, though it\nhas some similarity to strcmp() returning 0 for equal strings.", sinceVersion = Nothing}}
type C_TreeViewSearchEqualFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Int32 ->
    CString ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel being searched", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "column", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the search column set by gtk_tree_view_set_search_column()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the key string to compare with", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing the row of @model that should be compared\n with @key.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "search_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data from gtk_tree_view_set_search_equal_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeViewSearchEqualFunc :: FunPtr C_TreeViewSearchEqualFunc -> C_TreeViewSearchEqualFunc

dynamic_TreeViewSearchEqualFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeViewSearchEqualFunc
    -> a
    {- ^ /@model@/: the 'GI.Gtk.Interfaces.TreeModel.TreeModel' being searched -}
    -> Int32
    {- ^ /@column@/: the search column set by 'GI.Gtk.Objects.TreeView.treeViewSetSearchColumn' -}
    -> T.Text
    {- ^ /@key@/: the key string to compare with -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' pointing the row of /@model@/ that should be compared
 with /@key@/. -}
    -> Ptr ()
    {- ^ /@searchData@/: user data from 'GI.Gtk.Objects.TreeView.treeViewSetSearchEqualFunc' -}
    -> m Bool
    {- ^ __Returns:__ 'False' if the row matches, 'True' otherwise. -}
dynamic_TreeViewSearchEqualFunc __funPtr model column key iter searchData = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    key' <- textToCString key
    iter' <- unsafeManagedPtrGetPtr iter
    result <- (__dynamic_C_TreeViewSearchEqualFunc __funPtr) model' column key' iter' searchData
    let result' = (/= 0) result
    touchManagedPtr model
    touchManagedPtr iter
    freeMem key'
    return result'

foreign import ccall "wrapper"
    mk_TreeViewSearchEqualFunc :: C_TreeViewSearchEqualFunc -> IO (FunPtr C_TreeViewSearchEqualFunc)

type TreeViewSearchEqualFunc =
    Gtk.TreeModel.TreeModel ->
    Int32 ->
    T.Text ->
    Gtk.TreeIter.TreeIter ->
    IO Bool

noTreeViewSearchEqualFunc :: Maybe TreeViewSearchEqualFunc
noTreeViewSearchEqualFunc = Nothing

type TreeViewSearchEqualFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Int32 ->
    T.Text ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Bool

noTreeViewSearchEqualFunc_WithClosures :: Maybe TreeViewSearchEqualFunc_WithClosures
noTreeViewSearchEqualFunc_WithClosures = Nothing

drop_closures_TreeViewSearchEqualFunc :: TreeViewSearchEqualFunc -> TreeViewSearchEqualFunc_WithClosures
drop_closures_TreeViewSearchEqualFunc _f model column key iter _ = _f model column key iter

genClosure_TreeViewSearchEqualFunc :: TreeViewSearchEqualFunc -> IO Closure
genClosure_TreeViewSearchEqualFunc cb = do
    let cb' = drop_closures_TreeViewSearchEqualFunc cb
    let cb'' = wrap_TreeViewSearchEqualFunc Nothing cb'
    mk_TreeViewSearchEqualFunc cb'' >>= newCClosure


wrap_TreeViewSearchEqualFunc ::
    Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc)) ->
    TreeViewSearchEqualFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Int32 ->
    CString ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt
wrap_TreeViewSearchEqualFunc funptrptr _cb model column key iter searchData = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    key' <- cstringToText key
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        result <- _cb  model' column key' iter' searchData
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback TreeViewRowSeparatorFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the row is a separator", sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing at a row in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Function type for determining whether the row pointed to by @iter should\nbe rendered as a separator. A common way to implement this is to have a\nboolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc\nreturns.", sinceVersion = Nothing}}
type C_TreeViewRowSeparatorFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing at a row in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeViewRowSeparatorFunc :: FunPtr C_TreeViewRowSeparatorFunc -> C_TreeViewRowSeparatorFunc

dynamic_TreeViewRowSeparatorFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeViewRowSeparatorFunc
    -> a
    {- ^ /@model@/: the 'GI.Gtk.Interfaces.TreeModel.TreeModel' -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' pointing at a row in /@model@/ -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the row is a separator -}
dynamic_TreeViewRowSeparatorFunc __funPtr model iter data_ = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    iter' <- unsafeManagedPtrGetPtr iter
    result <- (__dynamic_C_TreeViewRowSeparatorFunc __funPtr) model' iter' data_
    let result' = (/= 0) result
    touchManagedPtr model
    touchManagedPtr iter
    return result'

foreign import ccall "wrapper"
    mk_TreeViewRowSeparatorFunc :: C_TreeViewRowSeparatorFunc -> IO (FunPtr C_TreeViewRowSeparatorFunc)

type TreeViewRowSeparatorFunc =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    IO Bool

noTreeViewRowSeparatorFunc :: Maybe TreeViewRowSeparatorFunc
noTreeViewRowSeparatorFunc = Nothing

type TreeViewRowSeparatorFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Bool

noTreeViewRowSeparatorFunc_WithClosures :: Maybe TreeViewRowSeparatorFunc_WithClosures
noTreeViewRowSeparatorFunc_WithClosures = Nothing

drop_closures_TreeViewRowSeparatorFunc :: TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
drop_closures_TreeViewRowSeparatorFunc _f model iter _ = _f model iter

genClosure_TreeViewRowSeparatorFunc :: TreeViewRowSeparatorFunc -> IO Closure
genClosure_TreeViewRowSeparatorFunc cb = do
    let cb' = drop_closures_TreeViewRowSeparatorFunc cb
    let cb'' = wrap_TreeViewRowSeparatorFunc Nothing cb'
    mk_TreeViewRowSeparatorFunc cb'' >>= newCClosure


wrap_TreeViewRowSeparatorFunc ::
    Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc)) ->
    TreeViewRowSeparatorFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt
wrap_TreeViewRowSeparatorFunc funptrptr _cb model iter data_ = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        result <- _cb  model' iter' data_
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback TreeViewMappingFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The path that\8217s expanded", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Function used for gtk_tree_view_map_expanded_rows().", sinceVersion = Nothing}}
type C_TreeViewMappingFunc =
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The path that\8217s expanded", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeViewMappingFunc :: FunPtr C_TreeViewMappingFunc -> C_TreeViewMappingFunc

dynamic_TreeViewMappingFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a) =>
    FunPtr C_TreeViewMappingFunc
    -> a
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The path that’s expanded -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m ()
dynamic_TreeViewMappingFunc __funPtr treeView path userData = liftIO $ do
    treeView' <- unsafeManagedPtrCastPtr treeView
    path' <- unsafeManagedPtrGetPtr path
    (__dynamic_C_TreeViewMappingFunc __funPtr) treeView' path' userData
    touchManagedPtr treeView
    touchManagedPtr path
    return ()

foreign import ccall "wrapper"
    mk_TreeViewMappingFunc :: C_TreeViewMappingFunc -> IO (FunPtr C_TreeViewMappingFunc)

type TreeViewMappingFunc =
    Gtk.TreeView.TreeView ->
    Gtk.TreePath.TreePath ->
    IO ()

noTreeViewMappingFunc :: Maybe TreeViewMappingFunc
noTreeViewMappingFunc = Nothing

type TreeViewMappingFunc_WithClosures =
    Gtk.TreeView.TreeView ->
    Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()

noTreeViewMappingFunc_WithClosures :: Maybe TreeViewMappingFunc_WithClosures
noTreeViewMappingFunc_WithClosures = Nothing

drop_closures_TreeViewMappingFunc :: TreeViewMappingFunc -> TreeViewMappingFunc_WithClosures
drop_closures_TreeViewMappingFunc _f treeView path _ = _f treeView path

genClosure_TreeViewMappingFunc :: TreeViewMappingFunc -> IO Closure
genClosure_TreeViewMappingFunc cb = do
    let cb' = drop_closures_TreeViewMappingFunc cb
    let cb'' = wrap_TreeViewMappingFunc Nothing cb'
    mk_TreeViewMappingFunc cb'' >>= newCClosure


wrap_TreeViewMappingFunc ::
    Maybe (Ptr (FunPtr C_TreeViewMappingFunc)) ->
    TreeViewMappingFunc_WithClosures ->
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()
wrap_TreeViewMappingFunc funptrptr _cb treeView path userData = do
    treeView' <- (newObject Gtk.TreeView.TreeView) treeView
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        _cb  treeView' path' userData
        maybeReleaseFunPtr funptrptr


-- callback TreeViewColumnDropFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE, if @column can be dropped in this spot", sinceVersion = Nothing}, args = [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeViewColumn being dragged", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "prev_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn on one side of @column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "next_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn on the other side of @column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Function type for determining whether @column can be dropped in a\nparticular spot (as determined by @prev_column and @next_column).  In\nleft to right locales, @prev_column is on the left of the potential drop\nspot, and @next_column is on the right.  In right to left mode, this is\nreversed.  This function should return %TRUE if the spot is a valid drop\nspot.  Please note that returning %TRUE does not actually indicate that\nthe column drop was made, but is meant only to indicate a possible drop\nspot to the user.", sinceVersion = Nothing}}
type C_TreeViewColumnDropFunc =
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeViewColumn being dragged", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "prev_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn on one side of @column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "next_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn on the other side of @column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeViewColumnDropFunc :: FunPtr C_TreeViewColumnDropFunc -> C_TreeViewColumnDropFunc

dynamic_TreeViewColumnDropFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a, Gtk.TreeViewColumn.IsTreeViewColumn b, Gtk.TreeViewColumn.IsTreeViewColumn c, Gtk.TreeViewColumn.IsTreeViewColumn d) =>
    FunPtr C_TreeViewColumnDropFunc
    -> a
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> b
    {- ^ /@column@/: The 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged -}
    -> c
    {- ^ /@prevColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/ -}
    -> d
    {- ^ /@nextColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/ -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m Bool
    {- ^ __Returns:__ 'True', if /@column@/ can be dropped in this spot -}
dynamic_TreeViewColumnDropFunc __funPtr treeView column prevColumn nextColumn data_ = liftIO $ do
    treeView' <- unsafeManagedPtrCastPtr treeView
    column' <- unsafeManagedPtrCastPtr column
    prevColumn' <- unsafeManagedPtrCastPtr prevColumn
    nextColumn' <- unsafeManagedPtrCastPtr nextColumn
    result <- (__dynamic_C_TreeViewColumnDropFunc __funPtr) treeView' column' prevColumn' nextColumn' data_
    let result' = (/= 0) result
    touchManagedPtr treeView
    touchManagedPtr column
    touchManagedPtr prevColumn
    touchManagedPtr nextColumn
    return result'

foreign import ccall "wrapper"
    mk_TreeViewColumnDropFunc :: C_TreeViewColumnDropFunc -> IO (FunPtr C_TreeViewColumnDropFunc)

type TreeViewColumnDropFunc =
    Gtk.TreeView.TreeView ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    IO Bool

noTreeViewColumnDropFunc :: Maybe TreeViewColumnDropFunc
noTreeViewColumnDropFunc = Nothing

type TreeViewColumnDropFunc_WithClosures =
    Gtk.TreeView.TreeView ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr () ->
    IO Bool

noTreeViewColumnDropFunc_WithClosures :: Maybe TreeViewColumnDropFunc_WithClosures
noTreeViewColumnDropFunc_WithClosures = Nothing

drop_closures_TreeViewColumnDropFunc :: TreeViewColumnDropFunc -> TreeViewColumnDropFunc_WithClosures
drop_closures_TreeViewColumnDropFunc _f treeView column prevColumn nextColumn _ = _f treeView column prevColumn nextColumn

genClosure_TreeViewColumnDropFunc :: TreeViewColumnDropFunc -> IO Closure
genClosure_TreeViewColumnDropFunc cb = do
    let cb' = drop_closures_TreeViewColumnDropFunc cb
    let cb'' = wrap_TreeViewColumnDropFunc Nothing cb'
    mk_TreeViewColumnDropFunc cb'' >>= newCClosure


wrap_TreeViewColumnDropFunc ::
    Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc)) ->
    TreeViewColumnDropFunc_WithClosures ->
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr () ->
    IO CInt
wrap_TreeViewColumnDropFunc funptrptr _cb treeView column prevColumn nextColumn data_ = do
    treeView' <- (newObject Gtk.TreeView.TreeView) treeView
    column' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) column
    prevColumn' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) prevColumn
    nextColumn' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) nextColumn
    result <- _cb  treeView' column' prevColumn' nextColumn' data_
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback TreeSelectionFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE, if the selection state of the row can be toggled", sinceVersion = Nothing}, args = [Arg {argCName = "selection", argType = TInterface (Name {namespace = "Gtk", name = "TreeSelection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeSelection", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeModel being viewed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of the row in question", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path_currently_selected", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE, if the path is currently selected", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_tree_selection_set_select_function() to filter\nwhether or not a row may be selected.  It is called whenever a row's\nstate might change.  A return value of %TRUE indicates to @selection\nthat it is okay to change the selection.", sinceVersion = Nothing}}
type C_TreeSelectionFunc =
    Ptr Gtk.TreeSelection.TreeSelection ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    CInt ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "selection", argType = TInterface (Name {namespace = "Gtk", name = "TreeSelection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeSelection", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeModel being viewed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of the row in question", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path_currently_selected", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE, if the path is currently selected", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeSelectionFunc :: FunPtr C_TreeSelectionFunc -> C_TreeSelectionFunc

dynamic_TreeSelectionFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeSelection.IsTreeSelection a, Gtk.TreeModel.IsTreeModel b) =>
    FunPtr C_TreeSelectionFunc
    -> a
    {- ^ /@selection@/: A 'GI.Gtk.Objects.TreeSelection.TreeSelection' -}
    -> b
    {- ^ /@model@/: A 'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The 'GI.Gtk.Structs.TreePath.TreePath' of the row in question -}
    -> Bool
    {- ^ /@pathCurrentlySelected@/: 'True', if the path is currently selected -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m Bool
    {- ^ __Returns:__ 'True', if the selection state of the row can be toggled -}
dynamic_TreeSelectionFunc __funPtr selection model path pathCurrentlySelected data_ = liftIO $ do
    selection' <- unsafeManagedPtrCastPtr selection
    model' <- unsafeManagedPtrCastPtr model
    path' <- unsafeManagedPtrGetPtr path
    let pathCurrentlySelected' = (fromIntegral . fromEnum) pathCurrentlySelected
    result <- (__dynamic_C_TreeSelectionFunc __funPtr) selection' model' path' pathCurrentlySelected' data_
    let result' = (/= 0) result
    touchManagedPtr selection
    touchManagedPtr model
    touchManagedPtr path
    return result'

foreign import ccall "wrapper"
    mk_TreeSelectionFunc :: C_TreeSelectionFunc -> IO (FunPtr C_TreeSelectionFunc)

type TreeSelectionFunc =
    Gtk.TreeSelection.TreeSelection ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Bool ->
    IO Bool

noTreeSelectionFunc :: Maybe TreeSelectionFunc
noTreeSelectionFunc = Nothing

type TreeSelectionFunc_WithClosures =
    Gtk.TreeSelection.TreeSelection ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Bool ->
    Ptr () ->
    IO Bool

noTreeSelectionFunc_WithClosures :: Maybe TreeSelectionFunc_WithClosures
noTreeSelectionFunc_WithClosures = Nothing

drop_closures_TreeSelectionFunc :: TreeSelectionFunc -> TreeSelectionFunc_WithClosures
drop_closures_TreeSelectionFunc _f selection model path pathCurrentlySelected _ = _f selection model path pathCurrentlySelected

genClosure_TreeSelectionFunc :: TreeSelectionFunc -> IO Closure
genClosure_TreeSelectionFunc cb = do
    let cb' = drop_closures_TreeSelectionFunc cb
    let cb'' = wrap_TreeSelectionFunc Nothing cb'
    mk_TreeSelectionFunc cb'' >>= newCClosure


wrap_TreeSelectionFunc ::
    Maybe (Ptr (FunPtr C_TreeSelectionFunc)) ->
    TreeSelectionFunc_WithClosures ->
    Ptr Gtk.TreeSelection.TreeSelection ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    CInt ->
    Ptr () ->
    IO CInt
wrap_TreeSelectionFunc funptrptr _cb selection model path pathCurrentlySelected data_ = do
    selection' <- (newObject Gtk.TreeSelection.TreeSelection) selection
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        let pathCurrentlySelected' = (/= 0) pathCurrentlySelected
        result <- _cb  selection' model' path' pathCurrentlySelected' data_
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback TreeSelectionForeachFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel being viewed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter pointing to a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_tree_selection_selected_foreach() to map all\nselected rows.  It will be called on every selected row in the view.", sinceVersion = Nothing}}
type C_TreeSelectionForeachFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel being viewed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter pointing to a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeSelectionForeachFunc :: FunPtr C_TreeSelectionForeachFunc -> C_TreeSelectionForeachFunc

dynamic_TreeSelectionForeachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeSelectionForeachFunc
    -> a
    {- ^ /@model@/: The 'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The 'GI.Gtk.Structs.TreePath.TreePath' of a selected row -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: A 'GI.Gtk.Structs.TreeIter.TreeIter' pointing to a selected row -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m ()
dynamic_TreeSelectionForeachFunc __funPtr model path iter data_ = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    path' <- unsafeManagedPtrGetPtr path
    iter' <- unsafeManagedPtrGetPtr iter
    (__dynamic_C_TreeSelectionForeachFunc __funPtr) model' path' iter' data_
    touchManagedPtr model
    touchManagedPtr path
    touchManagedPtr iter
    return ()

foreign import ccall "wrapper"
    mk_TreeSelectionForeachFunc :: C_TreeSelectionForeachFunc -> IO (FunPtr C_TreeSelectionForeachFunc)

type TreeSelectionForeachFunc =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Gtk.TreeIter.TreeIter ->
    IO ()

noTreeSelectionForeachFunc :: Maybe TreeSelectionForeachFunc
noTreeSelectionForeachFunc = Nothing

type TreeSelectionForeachFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

noTreeSelectionForeachFunc_WithClosures :: Maybe TreeSelectionForeachFunc_WithClosures
noTreeSelectionForeachFunc_WithClosures = Nothing

drop_closures_TreeSelectionForeachFunc :: TreeSelectionForeachFunc -> TreeSelectionForeachFunc_WithClosures
drop_closures_TreeSelectionForeachFunc _f model path iter _ = _f model path iter

genClosure_TreeSelectionForeachFunc :: TreeSelectionForeachFunc -> IO Closure
genClosure_TreeSelectionForeachFunc cb = do
    let cb' = drop_closures_TreeSelectionForeachFunc cb
    let cb'' = wrap_TreeSelectionForeachFunc Nothing cb'
    mk_TreeSelectionForeachFunc cb'' >>= newCClosure


wrap_TreeSelectionForeachFunc ::
    Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc)) ->
    TreeSelectionForeachFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()
wrap_TreeSelectionForeachFunc funptrptr _cb model path iter data_ = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
            _cb  model' path' iter' data_
            maybeReleaseFunPtr funptrptr


-- callback TreeModelForeachFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE to stop iterating, %FALSE to continue", sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel being iterated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the current #GtkTreePath", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the current #GtkTreeIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "The user data passed to gtk_tree_model_foreach()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Type of the callback passed to gtk_tree_model_foreach() to\niterate over the rows in a tree model.", sinceVersion = Nothing}}
type C_TreeModelForeachFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModel being iterated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the current #GtkTreePath", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the current #GtkTreeIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "The user data passed to gtk_tree_model_foreach()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeModelForeachFunc :: FunPtr C_TreeModelForeachFunc -> C_TreeModelForeachFunc

dynamic_TreeModelForeachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeModelForeachFunc
    -> a
    {- ^ /@model@/: the 'GI.Gtk.Interfaces.TreeModel.TreeModel' being iterated -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: the current 'GI.Gtk.Structs.TreePath.TreePath' -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: the current 'GI.Gtk.Structs.TreeIter.TreeIter' -}
    -> Ptr ()
    {- ^ /@data@/: The user data passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach' -}
    -> m Bool
    {- ^ __Returns:__ 'True' to stop iterating, 'False' to continue -}
dynamic_TreeModelForeachFunc __funPtr model path iter data_ = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    path' <- unsafeManagedPtrGetPtr path
    iter' <- unsafeManagedPtrGetPtr iter
    result <- (__dynamic_C_TreeModelForeachFunc __funPtr) model' path' iter' data_
    let result' = (/= 0) result
    touchManagedPtr model
    touchManagedPtr path
    touchManagedPtr iter
    return result'

foreign import ccall "wrapper"
    mk_TreeModelForeachFunc :: C_TreeModelForeachFunc -> IO (FunPtr C_TreeModelForeachFunc)

type TreeModelForeachFunc =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Gtk.TreeIter.TreeIter ->
    IO Bool

noTreeModelForeachFunc :: Maybe TreeModelForeachFunc
noTreeModelForeachFunc = Nothing

type TreeModelForeachFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreePath.TreePath ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Bool

noTreeModelForeachFunc_WithClosures :: Maybe TreeModelForeachFunc_WithClosures
noTreeModelForeachFunc_WithClosures = Nothing

drop_closures_TreeModelForeachFunc :: TreeModelForeachFunc -> TreeModelForeachFunc_WithClosures
drop_closures_TreeModelForeachFunc _f model path iter _ = _f model path iter

genClosure_TreeModelForeachFunc :: TreeModelForeachFunc -> IO Closure
genClosure_TreeModelForeachFunc cb = do
    let cb' = drop_closures_TreeModelForeachFunc cb
    let cb'' = wrap_TreeModelForeachFunc Nothing cb'
    mk_TreeModelForeachFunc cb'' >>= newCClosure


wrap_TreeModelForeachFunc ::
    Maybe (Ptr (FunPtr C_TreeModelForeachFunc)) ->
    TreeModelForeachFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt
wrap_TreeModelForeachFunc funptrptr _cb model path iter data_ = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
            result <- _cb  model' path' iter' data_
            maybeReleaseFunPtr funptrptr
            let result' = (fromIntegral . fromEnum) result
            return result'


-- callback TreeModelFilterVisibleFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "Whether the row indicated by @iter is visible.", sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the child model of the #GtkTreeModelFilter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing to the row in @model whose visibility\n  is determined", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data given to gtk_tree_model_filter_set_visible_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function which decides whether the row indicated by @iter is visible.", sinceVersion = Nothing}}
type C_TreeModelFilterVisibleFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the child model of the #GtkTreeModelFilter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing to the row in @model whose visibility\n  is determined", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data given to gtk_tree_model_filter_set_visible_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeModelFilterVisibleFunc :: FunPtr C_TreeModelFilterVisibleFunc -> C_TreeModelFilterVisibleFunc

dynamic_TreeModelFilterVisibleFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeModelFilterVisibleFunc
    -> a
    {- ^ /@model@/: the child model of the 'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter' -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row in /@model@/ whose visibility
  is determined -}
    -> Ptr ()
    {- ^ /@data@/: user data given to 'GI.Gtk.Objects.TreeModelFilter.treeModelFilterSetVisibleFunc' -}
    -> m Bool
    {- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible. -}
dynamic_TreeModelFilterVisibleFunc __funPtr model iter data_ = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    iter' <- unsafeManagedPtrGetPtr iter
    result <- (__dynamic_C_TreeModelFilterVisibleFunc __funPtr) model' iter' data_
    let result' = (/= 0) result
    touchManagedPtr model
    touchManagedPtr iter
    return result'

foreign import ccall "wrapper"
    mk_TreeModelFilterVisibleFunc :: C_TreeModelFilterVisibleFunc -> IO (FunPtr C_TreeModelFilterVisibleFunc)

type TreeModelFilterVisibleFunc =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    IO Bool

noTreeModelFilterVisibleFunc :: Maybe TreeModelFilterVisibleFunc
noTreeModelFilterVisibleFunc = Nothing

type TreeModelFilterVisibleFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Bool

noTreeModelFilterVisibleFunc_WithClosures :: Maybe TreeModelFilterVisibleFunc_WithClosures
noTreeModelFilterVisibleFunc_WithClosures = Nothing

drop_closures_TreeModelFilterVisibleFunc :: TreeModelFilterVisibleFunc -> TreeModelFilterVisibleFunc_WithClosures
drop_closures_TreeModelFilterVisibleFunc _f model iter _ = _f model iter

genClosure_TreeModelFilterVisibleFunc :: TreeModelFilterVisibleFunc -> IO Closure
genClosure_TreeModelFilterVisibleFunc cb = do
    let cb' = drop_closures_TreeModelFilterVisibleFunc cb
    let cb'' = wrap_TreeModelFilterVisibleFunc Nothing cb'
    mk_TreeModelFilterVisibleFunc cb'' >>= newCClosure


wrap_TreeModelFilterVisibleFunc ::
    Maybe (Ptr (FunPtr C_TreeModelFilterVisibleFunc)) ->
    TreeModelFilterVisibleFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt
wrap_TreeModelFilterVisibleFunc funptrptr _cb model iter data_ = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        result <- _cb  model' iter' data_
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback TreeModelFilterModifyFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTreeModelFilter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter pointing to the row whose display values are determined", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GValue which is already initialized for\n with the correct type for the column @column.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "column", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the column whose display value is determined", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data given to gtk_tree_model_filter_set_modify_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function which calculates display values from raw values in the model.\nIt must fill @value with the display value for the column @column in the\nrow indicated by @iter.\n\nSince this function is called for each data access, it\8217s not a\nparticularly efficient operation.", sinceVersion = Nothing}}
-- XXX Could not generate callback wrapper for TreeModelFilterModifyFunc
-- Error was : Not implemented: "Unexpected transfer type for \"value\""
-- callback TreeIterCompareFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "a negative integer, zero or a positive integer depending on whether\n  @a sorts before, with or after @b", sinceVersion = Nothing}, args = [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel the comparison is within", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "a", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Another #GtkTreeIter in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Data passed when the compare func is assigned e.g. by\n gtk_tree_sortable_set_sort_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive\ninteger if @a sorts before @b, @a sorts with @b, or @a sorts after @b\nrespectively. If two iters compare as equal, their order in the sorted model\nis undefined. In order to ensure that the #GtkTreeSortable behaves as\nexpected, the GtkTreeIterCompareFunc must define a partial order on\nthe model, i.e. it must be reflexive, antisymmetric and transitive.\n\nFor example, if @model is a product catalogue, then a compare function\nfor the \8220price\8221 column could be one which returns\n`price_of(@a) - price_of(@b)`.", sinceVersion = Nothing}}
type C_TreeIterCompareFunc =
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel the comparison is within", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "a", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Another #GtkTreeIter in @model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Data passed when the compare func is assigned e.g. by\n gtk_tree_sortable_set_sort_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeIterCompareFunc :: FunPtr C_TreeIterCompareFunc -> C_TreeIterCompareFunc

dynamic_TreeIterCompareFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
    FunPtr C_TreeIterCompareFunc
    -> a
    {- ^ /@model@/: The 'GI.Gtk.Interfaces.TreeModel.TreeModel' the comparison is within -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@a@/: A 'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/ -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@b@/: Another 'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/ -}
    -> Ptr ()
    {- ^ /@userData@/: Data passed when the compare func is assigned e.g. by
 'GI.Gtk.Interfaces.TreeSortable.treeSortableSetSortFunc' -}
    -> m Int32
    {- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
  /@a@/ sorts before, with or after /@b@/ -}
dynamic_TreeIterCompareFunc __funPtr model a b userData = liftIO $ do
    model' <- unsafeManagedPtrCastPtr model
    a' <- unsafeManagedPtrGetPtr a
    b' <- unsafeManagedPtrGetPtr b
    result <- (__dynamic_C_TreeIterCompareFunc __funPtr) model' a' b' userData
    touchManagedPtr model
    touchManagedPtr a
    touchManagedPtr b
    return result

foreign import ccall "wrapper"
    mk_TreeIterCompareFunc :: C_TreeIterCompareFunc -> IO (FunPtr C_TreeIterCompareFunc)

type TreeIterCompareFunc =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Gtk.TreeIter.TreeIter ->
    IO Int32

noTreeIterCompareFunc :: Maybe TreeIterCompareFunc
noTreeIterCompareFunc = Nothing

type TreeIterCompareFunc_WithClosures =
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Int32

noTreeIterCompareFunc_WithClosures :: Maybe TreeIterCompareFunc_WithClosures
noTreeIterCompareFunc_WithClosures = Nothing

drop_closures_TreeIterCompareFunc :: TreeIterCompareFunc -> TreeIterCompareFunc_WithClosures
drop_closures_TreeIterCompareFunc _f model a b _ = _f model a b

genClosure_TreeIterCompareFunc :: TreeIterCompareFunc -> IO Closure
genClosure_TreeIterCompareFunc cb = do
    let cb' = drop_closures_TreeIterCompareFunc cb
    let cb'' = wrap_TreeIterCompareFunc Nothing cb'
    mk_TreeIterCompareFunc cb'' >>= newCClosure


wrap_TreeIterCompareFunc ::
    Maybe (Ptr (FunPtr C_TreeIterCompareFunc)) ->
    TreeIterCompareFunc_WithClosures ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Int32
wrap_TreeIterCompareFunc funptrptr _cb model a b userData = do
    model' <- (newObject Gtk.TreeModel.TreeModel) model
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter a $ \a' -> do
        B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter b $ \b' -> do
            result <- _cb  model' a' b' userData
            maybeReleaseFunPtr funptrptr
            return result


-- callback TreeDestroyCountFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "children", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_TreeDestroyCountFunc =
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreePath.TreePath ->
    Int32 ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "tree_view", argType = TInterface (Name {namespace = "Gtk", name = "TreeView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "children", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeDestroyCountFunc :: FunPtr C_TreeDestroyCountFunc -> C_TreeDestroyCountFunc

dynamic_TreeDestroyCountFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a) =>
    FunPtr C_TreeDestroyCountFunc
    -> a
    -> Gtk.TreePath.TreePath
    -> Int32
    -> Ptr ()
    -> m ()
dynamic_TreeDestroyCountFunc __funPtr treeView path children userData = liftIO $ do
    treeView' <- unsafeManagedPtrCastPtr treeView
    path' <- unsafeManagedPtrGetPtr path
    (__dynamic_C_TreeDestroyCountFunc __funPtr) treeView' path' children userData
    touchManagedPtr treeView
    touchManagedPtr path
    return ()

foreign import ccall "wrapper"
    mk_TreeDestroyCountFunc :: C_TreeDestroyCountFunc -> IO (FunPtr C_TreeDestroyCountFunc)

type TreeDestroyCountFunc =
    Gtk.TreeView.TreeView ->
    Gtk.TreePath.TreePath ->
    Int32 ->
    IO ()

noTreeDestroyCountFunc :: Maybe TreeDestroyCountFunc
noTreeDestroyCountFunc = Nothing

type TreeDestroyCountFunc_WithClosures =
    Gtk.TreeView.TreeView ->
    Gtk.TreePath.TreePath ->
    Int32 ->
    Ptr () ->
    IO ()

noTreeDestroyCountFunc_WithClosures :: Maybe TreeDestroyCountFunc_WithClosures
noTreeDestroyCountFunc_WithClosures = Nothing

drop_closures_TreeDestroyCountFunc :: TreeDestroyCountFunc -> TreeDestroyCountFunc_WithClosures
drop_closures_TreeDestroyCountFunc _f treeView path children _ = _f treeView path children

genClosure_TreeDestroyCountFunc :: TreeDestroyCountFunc -> IO Closure
genClosure_TreeDestroyCountFunc cb = do
    let cb' = drop_closures_TreeDestroyCountFunc cb
    let cb'' = wrap_TreeDestroyCountFunc Nothing cb'
    mk_TreeDestroyCountFunc cb'' >>= newCClosure


wrap_TreeDestroyCountFunc ::
    Maybe (Ptr (FunPtr C_TreeDestroyCountFunc)) ->
    TreeDestroyCountFunc_WithClosures ->
    Ptr Gtk.TreeView.TreeView ->
    Ptr Gtk.TreePath.TreePath ->
    Int32 ->
    Ptr () ->
    IO ()
wrap_TreeDestroyCountFunc funptrptr _cb treeView path children userData = do
    treeView' <- (newObject Gtk.TreeView.TreeView) treeView
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        _cb  treeView' path' children userData
        maybeReleaseFunPtr funptrptr


-- callback TreeCellDataFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "tree_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkCellRenderer that is being rendered by @tree_column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tree_model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel being rendered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter of the current row rendered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to set the properties of a cell instead of just using the\nstraight mapping between the cell and the model.  This is useful for\ncustomizing the cell renderer.  For example, a function might get an\ninteger from the @tree_model, and render it to the \8220text\8221 attribute of\n\8220cell\8221 by converting it to its written equivalent.  This is set by\ncalling gtk_tree_view_column_set_cell_data_func()", sinceVersion = Nothing}}
type C_TreeCellDataFunc =
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "tree_column", argType = TInterface (Name {namespace = "Gtk", name = "TreeViewColumn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeViewColumn", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkCellRenderer that is being rendered by @tree_column", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tree_model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreeModel being rendered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GtkTreeIter of the current row rendered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TreeCellDataFunc :: FunPtr C_TreeCellDataFunc -> C_TreeCellDataFunc

dynamic_TreeCellDataFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeViewColumn.IsTreeViewColumn a, Gtk.CellRenderer.IsCellRenderer b, Gtk.TreeModel.IsTreeModel c) =>
    FunPtr C_TreeCellDataFunc
    -> a
    {- ^ /@treeColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' -}
    -> b
    {- ^ /@cell@/: The 'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/ -}
    -> c
    {- ^ /@treeModel@/: The 'GI.Gtk.Interfaces.TreeModel.TreeModel' being rendered -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: A 'GI.Gtk.Structs.TreeIter.TreeIter' of the current row rendered -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m ()
dynamic_TreeCellDataFunc __funPtr treeColumn cell treeModel iter data_ = liftIO $ do
    treeColumn' <- unsafeManagedPtrCastPtr treeColumn
    cell' <- unsafeManagedPtrCastPtr cell
    treeModel' <- unsafeManagedPtrCastPtr treeModel
    iter' <- unsafeManagedPtrGetPtr iter
    (__dynamic_C_TreeCellDataFunc __funPtr) treeColumn' cell' treeModel' iter' data_
    touchManagedPtr treeColumn
    touchManagedPtr cell
    touchManagedPtr treeModel
    touchManagedPtr iter
    return ()

foreign import ccall "wrapper"
    mk_TreeCellDataFunc :: C_TreeCellDataFunc -> IO (FunPtr C_TreeCellDataFunc)

type TreeCellDataFunc =
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.CellRenderer.CellRenderer ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    IO ()

noTreeCellDataFunc :: Maybe TreeCellDataFunc
noTreeCellDataFunc = Nothing

type TreeCellDataFunc_WithClosures =
    Gtk.TreeViewColumn.TreeViewColumn ->
    Gtk.CellRenderer.CellRenderer ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

noTreeCellDataFunc_WithClosures :: Maybe TreeCellDataFunc_WithClosures
noTreeCellDataFunc_WithClosures = Nothing

drop_closures_TreeCellDataFunc :: TreeCellDataFunc -> TreeCellDataFunc_WithClosures
drop_closures_TreeCellDataFunc _f treeColumn cell treeModel iter _ = _f treeColumn cell treeModel iter

genClosure_TreeCellDataFunc :: TreeCellDataFunc -> IO Closure
genClosure_TreeCellDataFunc cb = do
    let cb' = drop_closures_TreeCellDataFunc cb
    let cb'' = wrap_TreeCellDataFunc Nothing cb'
    mk_TreeCellDataFunc cb'' >>= newCClosure


wrap_TreeCellDataFunc ::
    Maybe (Ptr (FunPtr C_TreeCellDataFunc)) ->
    TreeCellDataFunc_WithClosures ->
    Ptr Gtk.TreeViewColumn.TreeViewColumn ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()
wrap_TreeCellDataFunc funptrptr _cb treeColumn cell treeModel iter data_ = do
    treeColumn' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) treeColumn
    cell' <- (newObject Gtk.CellRenderer.CellRenderer) cell
    treeModel' <- (newObject Gtk.TreeModel.TreeModel) treeModel
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        _cb  treeColumn' cell' treeModel' iter' data_
        maybeReleaseFunPtr funptrptr


-- callback TranslateFunc
--          -> Callable {returnType = Just (TBasicType TUTF8), returnMayBeNull = False, returnTransfer = TransferEverything, returnDocumentation = Documentation {rawDocText = Just "the translated message", sinceVersion = Nothing}, args = [Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The id of the message. In #GtkActionGroup this will be a label\n  or tooltip from a #GtkActionEntry.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed in when registering the\n  function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Just (DeprecationInfo {deprecatedSinceVersion = Just "3.10", deprecationMessage = Nothing}), callableDocumentation = Documentation {rawDocText = Just "The function used to translate messages in e.g. #GtkIconFactory\nand #GtkActionGroup.", sinceVersion = Nothing}}
type C_TranslateFunc =
    CString ->
    Ptr () ->
    IO CString

-- Args : [Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The id of the message. In #GtkActionGroup this will be a label\n  or tooltip from a #GtkActionEntry.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed in when registering the\n  function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TranslateFunc :: FunPtr C_TranslateFunc -> C_TranslateFunc

dynamic_TranslateFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_TranslateFunc
    -> T.Text
    {- ^ /@path@/: The id of the message. In 'GI.Gtk.Objects.ActionGroup.ActionGroup' this will be a label
  or tooltip from a 'GI.Gtk.Structs.ActionEntry.ActionEntry'. -}
    -> Ptr ()
    {- ^ /@funcData@/: user data passed in when registering the
  function -}
    -> m T.Text
    {- ^ __Returns:__ the translated message -}
dynamic_TranslateFunc __funPtr path funcData = liftIO $ do
    path' <- textToCString path
    result <- (__dynamic_C_TranslateFunc __funPtr) path' funcData
    checkUnexpectedReturnNULL "translateFunc" result
    result' <- cstringToText result
    freeMem result
    freeMem path'
    return result'

foreign import ccall "wrapper"
    mk_TranslateFunc :: C_TranslateFunc -> IO (FunPtr C_TranslateFunc)

{-# DEPRECATED TranslateFunc ["(Since version 3.10)"] #-}
type TranslateFunc =
    T.Text ->
    IO T.Text

noTranslateFunc :: Maybe TranslateFunc
noTranslateFunc = Nothing

type TranslateFunc_WithClosures =
    T.Text ->
    Ptr () ->
    IO T.Text

noTranslateFunc_WithClosures :: Maybe TranslateFunc_WithClosures
noTranslateFunc_WithClosures = Nothing

drop_closures_TranslateFunc :: TranslateFunc -> TranslateFunc_WithClosures
drop_closures_TranslateFunc _f path _ = _f path

genClosure_TranslateFunc :: TranslateFunc -> IO Closure
genClosure_TranslateFunc cb = do
    let cb' = drop_closures_TranslateFunc cb
    let cb'' = wrap_TranslateFunc Nothing cb'
    mk_TranslateFunc cb'' >>= newCClosure


wrap_TranslateFunc ::
    Maybe (Ptr (FunPtr C_TranslateFunc)) ->
    TranslateFunc_WithClosures ->
    CString ->
    Ptr () ->
    IO CString
wrap_TranslateFunc funptrptr _cb path funcData = do
    path' <- cstringToText path
    result <- _cb  path' funcData
    maybeReleaseFunPtr funptrptr
    result' <- textToCString result
    return result'


-- callback TickCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%G_SOURCE_CONTINUE if the tick callback should continue to be called,\n %G_SOURCE_REMOVE if the tick callback should be removed.", sinceVersion = Nothing}, args = [Arg {argCName = "widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame_clock", argType = TInterface (Name {namespace = "Gdk", name = "FrameClock"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the frame clock for the widget (same as calling gtk_widget_get_frame_clock())", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_widget_add_tick_callback().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Callback type for adding a function to update animations. See gtk_widget_add_tick_callback().", sinceVersion = Just "3.8"}}
type C_TickCallback =
    Ptr Gtk.Widget.Widget ->
    Ptr Gdk.FrameClock.FrameClock ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame_clock", argType = TInterface (Name {namespace = "Gdk", name = "FrameClock"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the frame clock for the widget (same as calling gtk_widget_get_frame_clock())", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_widget_add_tick_callback().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TickCallback :: FunPtr C_TickCallback -> C_TickCallback

dynamic_TickCallback ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.FrameClock.IsFrameClock b) =>
    FunPtr C_TickCallback
    -> a
    {- ^ /@widget@/: the widget -}
    -> b
    {- ^ /@frameClock@/: the frame clock for the widget (same as calling 'GI.Gtk.Objects.Widget.widgetGetFrameClock') -}
    -> Ptr ()
    {- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.Widget.widgetAddTickCallback'. -}
    -> m Bool
    {- ^ __Returns:__ 'GI.GLib.Constants.SOURCE_CONTINUE' if the tick callback should continue to be called,
 'GI.GLib.Constants.SOURCE_REMOVE' if the tick callback should be removed. -}
dynamic_TickCallback __funPtr widget frameClock userData = liftIO $ do
    widget' <- unsafeManagedPtrCastPtr widget
    frameClock' <- unsafeManagedPtrCastPtr frameClock
    result <- (__dynamic_C_TickCallback __funPtr) widget' frameClock' userData
    let result' = (/= 0) result
    touchManagedPtr widget
    touchManagedPtr frameClock
    return result'

foreign import ccall "wrapper"
    mk_TickCallback :: C_TickCallback -> IO (FunPtr C_TickCallback)

type TickCallback =
    Gtk.Widget.Widget ->
    Gdk.FrameClock.FrameClock ->
    IO Bool

noTickCallback :: Maybe TickCallback
noTickCallback = Nothing

type TickCallback_WithClosures =
    Gtk.Widget.Widget ->
    Gdk.FrameClock.FrameClock ->
    Ptr () ->
    IO Bool

noTickCallback_WithClosures :: Maybe TickCallback_WithClosures
noTickCallback_WithClosures = Nothing

drop_closures_TickCallback :: TickCallback -> TickCallback_WithClosures
drop_closures_TickCallback _f widget frameClock _ = _f widget frameClock

genClosure_TickCallback :: TickCallback -> IO Closure
genClosure_TickCallback cb = do
    let cb' = drop_closures_TickCallback cb
    let cb'' = wrap_TickCallback Nothing cb'
    mk_TickCallback cb'' >>= newCClosure


wrap_TickCallback ::
    Maybe (Ptr (FunPtr C_TickCallback)) ->
    TickCallback_WithClosures ->
    Ptr Gtk.Widget.Widget ->
    Ptr Gdk.FrameClock.FrameClock ->
    Ptr () ->
    IO CInt
wrap_TickCallback funptrptr _cb widget frameClock userData = do
    widget' <- (newObject Gtk.Widget.Widget) widget
    frameClock' <- (newObject Gdk.FrameClock.FrameClock) frameClock
    result <- _cb  widget' frameClock' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback TextTagTableForeach
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "tag", argType = TInterface (Name {namespace = "Gtk", name = "TextTag"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextTag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data passed to gtk_text_tag_table_foreach()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_TextTagTableForeach =
    Ptr Gtk.TextTag.TextTag ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "tag", argType = TInterface (Name {namespace = "Gtk", name = "TextTag"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextTag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data passed to gtk_text_tag_table_foreach()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TextTagTableForeach :: FunPtr C_TextTagTableForeach -> C_TextTagTableForeach

dynamic_TextTagTableForeach ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TextTag.IsTextTag a) =>
    FunPtr C_TextTagTableForeach
    -> a
    {- ^ /@tag@/: the 'GI.Gtk.Objects.TextTag.TextTag' -}
    -> Ptr ()
    {- ^ /@data@/: data passed to 'GI.Gtk.Objects.TextTagTable.textTagTableForeach' -}
    -> m ()
dynamic_TextTagTableForeach __funPtr tag data_ = liftIO $ do
    tag' <- unsafeManagedPtrCastPtr tag
    (__dynamic_C_TextTagTableForeach __funPtr) tag' data_
    touchManagedPtr tag
    return ()

foreign import ccall "wrapper"
    mk_TextTagTableForeach :: C_TextTagTableForeach -> IO (FunPtr C_TextTagTableForeach)

type TextTagTableForeach =
    Gtk.TextTag.TextTag ->
    IO ()

noTextTagTableForeach :: Maybe TextTagTableForeach
noTextTagTableForeach = Nothing

type TextTagTableForeach_WithClosures =
    Gtk.TextTag.TextTag ->
    Ptr () ->
    IO ()

noTextTagTableForeach_WithClosures :: Maybe TextTagTableForeach_WithClosures
noTextTagTableForeach_WithClosures = Nothing

drop_closures_TextTagTableForeach :: TextTagTableForeach -> TextTagTableForeach_WithClosures
drop_closures_TextTagTableForeach _f tag _ = _f tag

genClosure_TextTagTableForeach :: TextTagTableForeach -> IO Closure
genClosure_TextTagTableForeach cb = do
    let cb' = drop_closures_TextTagTableForeach cb
    let cb'' = wrap_TextTagTableForeach Nothing cb'
    mk_TextTagTableForeach cb'' >>= newCClosure


wrap_TextTagTableForeach ::
    Maybe (Ptr (FunPtr C_TextTagTableForeach)) ->
    TextTagTableForeach_WithClosures ->
    Ptr Gtk.TextTag.TextTag ->
    Ptr () ->
    IO ()
wrap_TextTagTableForeach funptrptr _cb tag data_ = do
    tag' <- (newObject Gtk.TextTag.TextTag) tag
    _cb  tag' data_
    maybeReleaseFunPtr funptrptr


-- callback TextCharPredicate
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_TextCharPredicate =
    CInt ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "ch", argType = TBasicType TUniChar, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TextCharPredicate :: FunPtr C_TextCharPredicate -> C_TextCharPredicate

dynamic_TextCharPredicate ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_TextCharPredicate
    -> Char
    -> Ptr ()
    -> m Bool
dynamic_TextCharPredicate __funPtr ch userData = liftIO $ do
    let ch' = (fromIntegral . ord) ch
    result <- (__dynamic_C_TextCharPredicate __funPtr) ch' userData
    let result' = (/= 0) result
    return result'

foreign import ccall "wrapper"
    mk_TextCharPredicate :: C_TextCharPredicate -> IO (FunPtr C_TextCharPredicate)

type TextCharPredicate =
    Char ->
    IO Bool

noTextCharPredicate :: Maybe TextCharPredicate
noTextCharPredicate = Nothing

type TextCharPredicate_WithClosures =
    Char ->
    Ptr () ->
    IO Bool

noTextCharPredicate_WithClosures :: Maybe TextCharPredicate_WithClosures
noTextCharPredicate_WithClosures = Nothing

drop_closures_TextCharPredicate :: TextCharPredicate -> TextCharPredicate_WithClosures
drop_closures_TextCharPredicate _f ch _ = _f ch

genClosure_TextCharPredicate :: TextCharPredicate -> IO Closure
genClosure_TextCharPredicate cb = do
    let cb' = drop_closures_TextCharPredicate cb
    let cb'' = wrap_TextCharPredicate Nothing cb'
    mk_TextCharPredicate cb'' >>= newCClosure


wrap_TextCharPredicate ::
    Maybe (Ptr (FunPtr C_TextCharPredicate)) ->
    TextCharPredicate_WithClosures ->
    CInt ->
    Ptr () ->
    IO CInt
wrap_TextCharPredicate funptrptr _cb ch userData = do
    let ch' = (chr . fromIntegral) ch
    result <- _cb  ch' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback TextBufferSerializeFunc
--          -> Callable {returnType = Just (TBasicType TUInt8), returnMayBeNull = True, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "a newly-allocated array of guint8 which contains\nthe serialized data, or %NULL if an error occurred", sinceVersion = Nothing}, args = [Arg {argCName = "register_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer for which the format is registered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "start of the block of text to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "end of the block of text to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Return location for the length of the serialized data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that was specified when registering the format", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function that is called to serialize the content of a text buffer.\nIt must return the serialized form of the content.", sinceVersion = Nothing}}
type C_TextBufferSerializeFunc =
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gtk.TextIter.TextIter ->
    Word64 ->
    Ptr () ->
    IO Word8

-- Args : [Arg {argCName = "register_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer for which the format is registered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "start of the block of text to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "end of the block of text to serialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Return location for the length of the serialized data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that was specified when registering the format", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt8)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TextBufferSerializeFunc :: FunPtr C_TextBufferSerializeFunc -> C_TextBufferSerializeFunc

dynamic_TextBufferSerializeFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TextBuffer.IsTextBuffer a, Gtk.TextBuffer.IsTextBuffer b) =>
    FunPtr C_TextBufferSerializeFunc
    -> a
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered -}
    -> b
    {- ^ /@contentBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' to serialize -}
    -> Gtk.TextIter.TextIter
    {- ^ /@start@/: start of the block of text to serialize -}
    -> Gtk.TextIter.TextIter
    {- ^ /@end@/: end of the block of text to serialize -}
    -> Word64
    {- ^ /@length@/: Return location for the length of the serialized data -}
    -> Ptr ()
    {- ^ /@userData@/: user data that was specified when registering the format -}
    -> m Word8
    {- ^ __Returns:__ a newly-allocated array of guint8 which contains
the serialized data, or 'Nothing' if an error occurred -}
dynamic_TextBufferSerializeFunc __funPtr registerBuffer contentBuffer start end length_ userData = liftIO $ do
    registerBuffer' <- unsafeManagedPtrCastPtr registerBuffer
    contentBuffer' <- unsafeManagedPtrCastPtr contentBuffer
    start' <- unsafeManagedPtrGetPtr start
    end' <- unsafeManagedPtrGetPtr end
    result <- (__dynamic_C_TextBufferSerializeFunc __funPtr) registerBuffer' contentBuffer' start' end' length_ userData
    touchManagedPtr registerBuffer
    touchManagedPtr contentBuffer
    touchManagedPtr start
    touchManagedPtr end
    return result

foreign import ccall "wrapper"
    mk_TextBufferSerializeFunc :: C_TextBufferSerializeFunc -> IO (FunPtr C_TextBufferSerializeFunc)

type TextBufferSerializeFunc =
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextIter.TextIter ->
    Gtk.TextIter.TextIter ->
    Word64 ->
    IO Word8

noTextBufferSerializeFunc :: Maybe TextBufferSerializeFunc
noTextBufferSerializeFunc = Nothing

type TextBufferSerializeFunc_WithClosures =
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextIter.TextIter ->
    Gtk.TextIter.TextIter ->
    Word64 ->
    Ptr () ->
    IO Word8

noTextBufferSerializeFunc_WithClosures :: Maybe TextBufferSerializeFunc_WithClosures
noTextBufferSerializeFunc_WithClosures = Nothing

drop_closures_TextBufferSerializeFunc :: TextBufferSerializeFunc -> TextBufferSerializeFunc_WithClosures
drop_closures_TextBufferSerializeFunc _f registerBuffer contentBuffer start end length_ _ = _f registerBuffer contentBuffer start end length_

genClosure_TextBufferSerializeFunc :: TextBufferSerializeFunc -> IO Closure
genClosure_TextBufferSerializeFunc cb = do
    let cb' = drop_closures_TextBufferSerializeFunc cb
    let cb'' = wrap_TextBufferSerializeFunc Nothing cb'
    mk_TextBufferSerializeFunc cb'' >>= newCClosure


wrap_TextBufferSerializeFunc ::
    Maybe (Ptr (FunPtr C_TextBufferSerializeFunc)) ->
    TextBufferSerializeFunc_WithClosures ->
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gtk.TextIter.TextIter ->
    Word64 ->
    Ptr () ->
    IO Word8
wrap_TextBufferSerializeFunc funptrptr _cb registerBuffer contentBuffer start end length_ userData = do
    registerBuffer' <- (newObject Gtk.TextBuffer.TextBuffer) registerBuffer
    contentBuffer' <- (newObject Gtk.TextBuffer.TextBuffer) contentBuffer
    B.ManagedPtr.withTransient Gtk.TextIter.TextIter start $ \start' -> do
        B.ManagedPtr.withTransient Gtk.TextIter.TextIter end $ \end' -> do
            result <- _cb  registerBuffer' contentBuffer' start' end' length_ userData
            maybeReleaseFunPtr funptrptr
            return result


-- callback TextBufferDeserializeFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE on success, %FALSE otherwise", sinceVersion = Nothing}, args = [Arg {argCName = "register_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer the format is registered with", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer to deserialize into", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "insertion point for the deserialized text", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to deserialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "create_tags", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE if deserializing may create tags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that was specified when registering the format", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 6, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function that is called to deserialize rich text that has been\nserialized with gtk_text_buffer_serialize(), and insert it at @iter.", sinceVersion = Nothing}}
type C_TextBufferDeserializeFunc =
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextBuffer.TextBuffer ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Word8 ->
    Word64 ->
    CInt ->
    Ptr () ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "register_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer the format is registered with", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "content_buffer", argType = TInterface (Name {namespace = "Gtk", name = "TextBuffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkTextBuffer to deserialize into", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "insertion point for the deserialized text", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to deserialize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "create_tags", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE if deserializing may create tags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that was specified when registering the format", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 6, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_TextBufferDeserializeFunc :: FunPtr C_TextBufferDeserializeFunc -> C_TextBufferDeserializeFunc

dynamic_TextBufferDeserializeFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.TextBuffer.IsTextBuffer a, Gtk.TextBuffer.IsTextBuffer b) =>
    FunPtr C_TextBufferDeserializeFunc
    -> a
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with -}
    -> b
    {- ^ /@contentBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' to deserialize into -}
    -> Gtk.TextIter.TextIter
    {- ^ /@iter@/: insertion point for the deserialized text -}
    -> ByteString
    {- ^ /@data@/: data to deserialize -}
    -> Bool
    {- ^ /@createTags@/: 'True' if deserializing may create tags -}
    -> Ptr ()
    {- ^ /@userData@/: user data that was specified when registering the format -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_TextBufferDeserializeFunc __funPtr registerBuffer contentBuffer iter data_ createTags userData = liftIO $ do
    let length_ = fromIntegral $ B.length data_
    registerBuffer' <- unsafeManagedPtrCastPtr registerBuffer
    contentBuffer' <- unsafeManagedPtrCastPtr contentBuffer
    iter' <- unsafeManagedPtrGetPtr iter
    data_' <- packByteString data_
    let createTags' = (fromIntegral . fromEnum) createTags
    onException (do
        _ <- propagateGError $ (__dynamic_C_TextBufferDeserializeFunc __funPtr) registerBuffer' contentBuffer' iter' data_' length_ createTags' userData
        touchManagedPtr registerBuffer
        touchManagedPtr contentBuffer
        touchManagedPtr iter
        freeMem data_'
        return ()
     ) (do
        freeMem data_'
     )

foreign import ccall "wrapper"
    mk_TextBufferDeserializeFunc :: C_TextBufferDeserializeFunc -> IO (FunPtr C_TextBufferDeserializeFunc)

type TextBufferDeserializeFunc =
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextIter.TextIter ->
    ByteString ->
    Bool ->
    IO ()

noTextBufferDeserializeFunc :: Maybe TextBufferDeserializeFunc
noTextBufferDeserializeFunc = Nothing

type TextBufferDeserializeFunc_WithClosures =
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextBuffer.TextBuffer ->
    Gtk.TextIter.TextIter ->
    ByteString ->
    Bool ->
    Ptr () ->
    IO ()

noTextBufferDeserializeFunc_WithClosures :: Maybe TextBufferDeserializeFunc_WithClosures
noTextBufferDeserializeFunc_WithClosures = Nothing

drop_closures_TextBufferDeserializeFunc :: TextBufferDeserializeFunc -> TextBufferDeserializeFunc_WithClosures
drop_closures_TextBufferDeserializeFunc _f registerBuffer contentBuffer iter data_ createTags _ = _f registerBuffer contentBuffer iter data_ createTags

-- No Haskell->C wrapper generated since the function throws.

-- callback StylePropertyParser
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_StylePropertyParser =
    CString ->
    Ptr GValue ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_StylePropertyParser :: FunPtr C_StylePropertyParser -> C_StylePropertyParser

dynamic_StylePropertyParser ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_StylePropertyParser
    -> T.Text
    -> GValue
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_StylePropertyParser __funPtr string value = liftIO $ do
    string' <- textToCString string
    value' <- unsafeManagedPtrGetPtr value
    onException (do
        _ <- propagateGError $ (__dynamic_C_StylePropertyParser __funPtr) string' value'
        touchManagedPtr value
        freeMem string'
        return ()
     ) (do
        freeMem string'
     )

foreign import ccall "wrapper"
    mk_StylePropertyParser :: C_StylePropertyParser -> IO (FunPtr C_StylePropertyParser)

type StylePropertyParser =
    T.Text ->
    GValue ->
    IO ()

noStylePropertyParser :: Maybe StylePropertyParser
noStylePropertyParser = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback RecentSortFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "a", argType = TInterface (Name {namespace = "Gtk", name = "RecentInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface (Name {namespace = "Gtk", name = "RecentInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_RecentSortFunc =
    Ptr Gtk.RecentInfo.RecentInfo ->
    Ptr Gtk.RecentInfo.RecentInfo ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "a", argType = TInterface (Name {namespace = "Gtk", name = "RecentInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface (Name {namespace = "Gtk", name = "RecentInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_RecentSortFunc :: FunPtr C_RecentSortFunc -> C_RecentSortFunc

dynamic_RecentSortFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_RecentSortFunc
    -> Gtk.RecentInfo.RecentInfo
    -> Gtk.RecentInfo.RecentInfo
    -> Ptr ()
    -> m Int32
dynamic_RecentSortFunc __funPtr a b userData = liftIO $ do
    a' <- unsafeManagedPtrGetPtr a
    b' <- unsafeManagedPtrGetPtr b
    result <- (__dynamic_C_RecentSortFunc __funPtr) a' b' userData
    touchManagedPtr a
    touchManagedPtr b
    return result

foreign import ccall "wrapper"
    mk_RecentSortFunc :: C_RecentSortFunc -> IO (FunPtr C_RecentSortFunc)

type RecentSortFunc =
    Gtk.RecentInfo.RecentInfo ->
    Gtk.RecentInfo.RecentInfo ->
    IO Int32

noRecentSortFunc :: Maybe RecentSortFunc
noRecentSortFunc = Nothing

type RecentSortFunc_WithClosures =
    Gtk.RecentInfo.RecentInfo ->
    Gtk.RecentInfo.RecentInfo ->
    Ptr () ->
    IO Int32

noRecentSortFunc_WithClosures :: Maybe RecentSortFunc_WithClosures
noRecentSortFunc_WithClosures = Nothing

drop_closures_RecentSortFunc :: RecentSortFunc -> RecentSortFunc_WithClosures
drop_closures_RecentSortFunc _f a b _ = _f a b

genClosure_RecentSortFunc :: RecentSortFunc -> IO Closure
genClosure_RecentSortFunc cb = do
    let cb' = drop_closures_RecentSortFunc cb
    let cb'' = wrap_RecentSortFunc Nothing cb'
    mk_RecentSortFunc cb'' >>= newCClosure


wrap_RecentSortFunc ::
    Maybe (Ptr (FunPtr C_RecentSortFunc)) ->
    RecentSortFunc_WithClosures ->
    Ptr Gtk.RecentInfo.RecentInfo ->
    Ptr Gtk.RecentInfo.RecentInfo ->
    Ptr () ->
    IO Int32
wrap_RecentSortFunc funptrptr _cb a b userData = do
    B.ManagedPtr.withTransient Gtk.RecentInfo.RecentInfo a $ \a' -> do
        B.ManagedPtr.withTransient Gtk.RecentInfo.RecentInfo b $ \b' -> do
            result <- _cb  a' b' userData
            maybeReleaseFunPtr funptrptr
            return result


-- callback RecentFilterFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the file should be displayed", sinceVersion = Nothing}, args = [Arg {argCName = "filter_info", argType = TInterface (Name {namespace = "Gtk", name = "RecentFilterInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkRecentFilterInfo that is filled according\n to the @needed flags passed to gtk_recent_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_recent_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of function that is used with custom filters,\nsee gtk_recent_filter_add_custom().", sinceVersion = Nothing}}
type C_RecentFilterFunc =
    Ptr Gtk.RecentFilterInfo.RecentFilterInfo ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "filter_info", argType = TInterface (Name {namespace = "Gtk", name = "RecentFilterInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkRecentFilterInfo that is filled according\n to the @needed flags passed to gtk_recent_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_recent_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_RecentFilterFunc :: FunPtr C_RecentFilterFunc -> C_RecentFilterFunc

dynamic_RecentFilterFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_RecentFilterFunc
    -> Gtk.RecentFilterInfo.RecentFilterInfo
    {- ^ /@filterInfo@/: a 'GI.Gtk.Structs.RecentFilterInfo.RecentFilterInfo' that is filled according
 to the /@needed@/ flags passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom' -}
    -> Ptr ()
    {- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the file should be displayed -}
dynamic_RecentFilterFunc __funPtr filterInfo userData = liftIO $ do
    filterInfo' <- unsafeManagedPtrGetPtr filterInfo
    result <- (__dynamic_C_RecentFilterFunc __funPtr) filterInfo' userData
    let result' = (/= 0) result
    touchManagedPtr filterInfo
    return result'

foreign import ccall "wrapper"
    mk_RecentFilterFunc :: C_RecentFilterFunc -> IO (FunPtr C_RecentFilterFunc)

type RecentFilterFunc =
    Gtk.RecentFilterInfo.RecentFilterInfo ->
    IO Bool

noRecentFilterFunc :: Maybe RecentFilterFunc
noRecentFilterFunc = Nothing

type RecentFilterFunc_WithClosures =
    Gtk.RecentFilterInfo.RecentFilterInfo ->
    Ptr () ->
    IO Bool

noRecentFilterFunc_WithClosures :: Maybe RecentFilterFunc_WithClosures
noRecentFilterFunc_WithClosures = Nothing

drop_closures_RecentFilterFunc :: RecentFilterFunc -> RecentFilterFunc_WithClosures
drop_closures_RecentFilterFunc _f filterInfo _ = _f filterInfo

genClosure_RecentFilterFunc :: RecentFilterFunc -> IO Closure
genClosure_RecentFilterFunc cb = do
    let cb' = drop_closures_RecentFilterFunc cb
    let cb'' = wrap_RecentFilterFunc Nothing cb'
    mk_RecentFilterFunc cb'' >>= newCClosure


wrap_RecentFilterFunc ::
    Maybe (Ptr (FunPtr C_RecentFilterFunc)) ->
    RecentFilterFunc_WithClosures ->
    Ptr Gtk.RecentFilterInfo.RecentFilterInfo ->
    Ptr () ->
    IO CInt
wrap_RecentFilterFunc funptrptr _cb filterInfo userData = do
    filterInfo' <- (newPtr Gtk.RecentFilterInfo.RecentFilterInfo) filterInfo
    result <- _cb  filterInfo' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback RcPropertyParser
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "pspec", argType = TParamSpec, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rc_string", argType = TInterface (Name {namespace = "GLib", name = "String"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_RcPropertyParser =
    Ptr GParamSpec ->
    Ptr GLib.String.String ->
    Ptr GValue ->
    IO CInt

-- Args : [Arg {argCName = "pspec", argType = TParamSpec, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rc_string", argType = TInterface (Name {namespace = "GLib", name = "String"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_value", argType = TInterface (Name {namespace = "GObject", name = "Value"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_RcPropertyParser :: FunPtr C_RcPropertyParser -> C_RcPropertyParser

dynamic_RcPropertyParser ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_RcPropertyParser
    -> GParamSpec
    -> GLib.String.String
    -> GValue
    -> m Bool
dynamic_RcPropertyParser __funPtr pspec rcString propertyValue = liftIO $ do
    pspec' <- unsafeManagedPtrGetPtr pspec
    rcString' <- unsafeManagedPtrGetPtr rcString
    propertyValue' <- unsafeManagedPtrGetPtr propertyValue
    result <- (__dynamic_C_RcPropertyParser __funPtr) pspec' rcString' propertyValue'
    let result' = (/= 0) result
    touchManagedPtr pspec
    touchManagedPtr rcString
    touchManagedPtr propertyValue
    return result'

foreign import ccall "wrapper"
    mk_RcPropertyParser :: C_RcPropertyParser -> IO (FunPtr C_RcPropertyParser)

type RcPropertyParser =
    GParamSpec ->
    GLib.String.String ->
    GValue ->
    IO Bool

noRcPropertyParser :: Maybe RcPropertyParser
noRcPropertyParser = Nothing

genClosure_RcPropertyParser :: RcPropertyParser -> IO Closure
genClosure_RcPropertyParser cb = do
    let cb' = wrap_RcPropertyParser Nothing cb
    mk_RcPropertyParser cb' >>= newCClosure


wrap_RcPropertyParser ::
    Maybe (Ptr (FunPtr C_RcPropertyParser)) ->
    RcPropertyParser ->
    Ptr GParamSpec ->
    Ptr GLib.String.String ->
    Ptr GValue ->
    IO CInt
wrap_RcPropertyParser funptrptr _cb pspec rcString propertyValue = do
    pspec' <- newGParamSpecFromPtr pspec
    B.ManagedPtr.withTransient GLib.String.String rcString $ \rcString' -> do
        B.ManagedPtr.withTransient GValue propertyValue $ \propertyValue' -> do
            result <- _cb  pspec' rcString' propertyValue'
            maybeReleaseFunPtr funptrptr
            let result' = (fromIntegral . fromEnum) result
            return result'


-- callback PrintSettingsFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_PrintSettingsFunc =
    CString ->
    CString ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_PrintSettingsFunc :: FunPtr C_PrintSettingsFunc -> C_PrintSettingsFunc

dynamic_PrintSettingsFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_PrintSettingsFunc
    -> T.Text
    -> T.Text
    -> Ptr ()
    -> m ()
dynamic_PrintSettingsFunc __funPtr key value userData = liftIO $ do
    key' <- textToCString key
    value' <- textToCString value
    (__dynamic_C_PrintSettingsFunc __funPtr) key' value' userData
    freeMem key'
    freeMem value'
    return ()

foreign import ccall "wrapper"
    mk_PrintSettingsFunc :: C_PrintSettingsFunc -> IO (FunPtr C_PrintSettingsFunc)

type PrintSettingsFunc =
    T.Text ->
    T.Text ->
    IO ()

noPrintSettingsFunc :: Maybe PrintSettingsFunc
noPrintSettingsFunc = Nothing

type PrintSettingsFunc_WithClosures =
    T.Text ->
    T.Text ->
    Ptr () ->
    IO ()

noPrintSettingsFunc_WithClosures :: Maybe PrintSettingsFunc_WithClosures
noPrintSettingsFunc_WithClosures = Nothing

drop_closures_PrintSettingsFunc :: PrintSettingsFunc -> PrintSettingsFunc_WithClosures
drop_closures_PrintSettingsFunc _f key value _ = _f key value

genClosure_PrintSettingsFunc :: PrintSettingsFunc -> IO Closure
genClosure_PrintSettingsFunc cb = do
    let cb' = drop_closures_PrintSettingsFunc cb
    let cb'' = wrap_PrintSettingsFunc Nothing cb'
    mk_PrintSettingsFunc cb'' >>= newCClosure


wrap_PrintSettingsFunc ::
    Maybe (Ptr (FunPtr C_PrintSettingsFunc)) ->
    PrintSettingsFunc_WithClosures ->
    CString ->
    CString ->
    Ptr () ->
    IO ()
wrap_PrintSettingsFunc funptrptr _cb key value userData = do
    key' <- cstringToText key
    value' <- cstringToText value
    _cb  key' value' userData
    maybeReleaseFunPtr funptrptr


-- callback PageSetupDoneFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "page_setup", argType = TInterface (Name {namespace = "Gtk", name = "PageSetup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkPageSetup that has been", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that has been passed to\n    gtk_print_run_page_setup_dialog_async()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of function that is passed to\ngtk_print_run_page_setup_dialog_async().\n\nThis function will be called when the page setup dialog\nis dismissed, and also serves as destroy notify for @data.", sinceVersion = Nothing}}
type C_PageSetupDoneFunc =
    Ptr Gtk.PageSetup.PageSetup ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "page_setup", argType = TInterface (Name {namespace = "Gtk", name = "PageSetup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkPageSetup that has been", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data that has been passed to\n    gtk_print_run_page_setup_dialog_async()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_PageSetupDoneFunc :: FunPtr C_PageSetupDoneFunc -> C_PageSetupDoneFunc

dynamic_PageSetupDoneFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.PageSetup.IsPageSetup a) =>
    FunPtr C_PageSetupDoneFunc
    -> a
    {- ^ /@pageSetup@/: the 'GI.Gtk.Objects.PageSetup.PageSetup' that has been -}
    -> Ptr ()
    {- ^ /@data@/: user data that has been passed to
    'GI.Gtk.Functions.printRunPageSetupDialogAsync' -}
    -> m ()
dynamic_PageSetupDoneFunc __funPtr pageSetup data_ = liftIO $ do
    pageSetup' <- unsafeManagedPtrCastPtr pageSetup
    (__dynamic_C_PageSetupDoneFunc __funPtr) pageSetup' data_
    touchManagedPtr pageSetup
    return ()

foreign import ccall "wrapper"
    mk_PageSetupDoneFunc :: C_PageSetupDoneFunc -> IO (FunPtr C_PageSetupDoneFunc)

type PageSetupDoneFunc =
    Gtk.PageSetup.PageSetup ->
    IO ()

noPageSetupDoneFunc :: Maybe PageSetupDoneFunc
noPageSetupDoneFunc = Nothing

type PageSetupDoneFunc_WithClosures =
    Gtk.PageSetup.PageSetup ->
    Ptr () ->
    IO ()

noPageSetupDoneFunc_WithClosures :: Maybe PageSetupDoneFunc_WithClosures
noPageSetupDoneFunc_WithClosures = Nothing

drop_closures_PageSetupDoneFunc :: PageSetupDoneFunc -> PageSetupDoneFunc_WithClosures
drop_closures_PageSetupDoneFunc _f pageSetup _ = _f pageSetup

genClosure_PageSetupDoneFunc :: PageSetupDoneFunc -> IO Closure
genClosure_PageSetupDoneFunc cb = do
    let cb' = drop_closures_PageSetupDoneFunc cb
    let cb'' = wrap_PageSetupDoneFunc Nothing cb'
    mk_PageSetupDoneFunc cb'' >>= newCClosure


wrap_PageSetupDoneFunc ::
    Maybe (Ptr (FunPtr C_PageSetupDoneFunc)) ->
    PageSetupDoneFunc_WithClosures ->
    Ptr Gtk.PageSetup.PageSetup ->
    Ptr () ->
    IO ()
wrap_PageSetupDoneFunc funptrptr _cb pageSetup data_ = do
    pageSetup' <- (newObject Gtk.PageSetup.PageSetup) pageSetup
    _cb  pageSetup' data_
    maybeReleaseFunPtr funptrptr


-- callback ModuleInitFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "GTK+ always passes %NULL for this argument", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "GTK+ always passes %NULL for this argument", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Each GTK+ module must have a function gtk_module_init() with this prototype.\nThis function is called after loading the module.", sinceVersion = Nothing}}
type C_ModuleInitFunc =
    Int32 ->
    Ptr CString ->
    IO ()

-- Args : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "GTK+ always passes %NULL for this argument", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "argv", argType = TCArray False (-1) 0 (TBasicType TUTF8), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "GTK+ always passes %NULL for this argument", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "argc", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "GTK+ always passes %NULL for this argument", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ModuleInitFunc :: FunPtr C_ModuleInitFunc -> C_ModuleInitFunc

dynamic_ModuleInitFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_ModuleInitFunc
    -> Maybe ([T.Text])
    {- ^ /@argv@/: GTK+ always passes 'Nothing' for this argument -}
    -> m ()
dynamic_ModuleInitFunc __funPtr argv = liftIO $ do
    let argc = case argv of
            Nothing -> 0
            Just jArgv -> fromIntegral $ length jArgv
    maybeArgv <- case argv of
        Nothing -> return nullPtr
        Just jArgv -> do
            jArgv' <- packUTF8CArray jArgv
            return jArgv'
    (__dynamic_C_ModuleInitFunc __funPtr) argc maybeArgv
    (mapCArrayWithLength argc) freeMem maybeArgv
    freeMem maybeArgv
    return ()

foreign import ccall "wrapper"
    mk_ModuleInitFunc :: C_ModuleInitFunc -> IO (FunPtr C_ModuleInitFunc)

type ModuleInitFunc =
    Maybe [T.Text] ->
    IO ()

noModuleInitFunc :: Maybe ModuleInitFunc
noModuleInitFunc = Nothing

genClosure_ModuleInitFunc :: ModuleInitFunc -> IO Closure
genClosure_ModuleInitFunc cb = do
    let cb' = wrap_ModuleInitFunc Nothing cb
    mk_ModuleInitFunc cb' >>= newCClosure


wrap_ModuleInitFunc ::
    Maybe (Ptr (FunPtr C_ModuleInitFunc)) ->
    ModuleInitFunc ->
    Int32 ->
    Ptr CString ->
    IO ()
wrap_ModuleInitFunc funptrptr _cb argc argv = do
    maybeArgv <-
        if argv == nullPtr
        then return Nothing
        else do
            argv' <- (unpackUTF8CArrayWithLength argc) argv
            return $ Just argv'
    _cb  maybeArgv
    maybeReleaseFunPtr funptrptr


-- callback ModuleDisplayInitFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "display", argType = TInterface (Name {namespace = "Gdk", name = "Display"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an open #GdkDisplay", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A multihead-aware GTK+ module may have a gtk_module_display_init() function\nwith this prototype. GTK+ calls this function for each opened display.", sinceVersion = Just "2.2"}}
type C_ModuleDisplayInitFunc =
    Ptr Gdk.Display.Display ->
    IO ()

-- Args : [Arg {argCName = "display", argType = TInterface (Name {namespace = "Gdk", name = "Display"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an open #GdkDisplay", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ModuleDisplayInitFunc :: FunPtr C_ModuleDisplayInitFunc -> C_ModuleDisplayInitFunc

dynamic_ModuleDisplayInitFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gdk.Display.IsDisplay a) =>
    FunPtr C_ModuleDisplayInitFunc
    -> a
    {- ^ /@display@/: an open 'GI.Gdk.Objects.Display.Display' -}
    -> m ()
dynamic_ModuleDisplayInitFunc __funPtr display = liftIO $ do
    display' <- unsafeManagedPtrCastPtr display
    (__dynamic_C_ModuleDisplayInitFunc __funPtr) display'
    touchManagedPtr display
    return ()

foreign import ccall "wrapper"
    mk_ModuleDisplayInitFunc :: C_ModuleDisplayInitFunc -> IO (FunPtr C_ModuleDisplayInitFunc)

type ModuleDisplayInitFunc =
    Gdk.Display.Display ->
    IO ()

noModuleDisplayInitFunc :: Maybe ModuleDisplayInitFunc
noModuleDisplayInitFunc = Nothing

genClosure_ModuleDisplayInitFunc :: ModuleDisplayInitFunc -> IO Closure
genClosure_ModuleDisplayInitFunc cb = do
    let cb' = wrap_ModuleDisplayInitFunc Nothing cb
    mk_ModuleDisplayInitFunc cb' >>= newCClosure


wrap_ModuleDisplayInitFunc ::
    Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc)) ->
    ModuleDisplayInitFunc ->
    Ptr Gdk.Display.Display ->
    IO ()
wrap_ModuleDisplayInitFunc funptrptr _cb display = do
    display' <- (newObject Gdk.Display.Display) display
    _cb  display'
    maybeReleaseFunPtr funptrptr


-- callback MenuPositionFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "menu", argType = TInterface (Name {namespace = "Gtk", name = "Menu"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkMenu.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of the #gint representing the horizontal\n    position where the menu shall be drawn.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of the #gint representing the vertical position\n    where the menu shall be drawn.  This is an output parameter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "push_in", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "This parameter controls how menus placed outside\n    the monitor are handled.  If this is set to %TRUE and part of\n    the menu is outside the monitor then GTK+ pushes the window\n    into the visible area, effectively modifying the popup\n    position.  Note that moving and possibly resizing the menu\n    around will alter the scroll position to keep the menu items\n    \8220in place\8221, i.e. at the same monitor position they would have\n    been without resizing.  In practice, this behavior is only\n    useful for combobox popups or option menus and cannot be used\n    to simply confine a menu to monitor boundaries.  In that case,\n    changing the scroll offset is not desirable.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data supplied by the user in the gtk_menu_popup()\n    @data parameter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A user function supplied when calling gtk_menu_popup() which\ncontrols the positioning of the menu when it is displayed.  The\nfunction sets the @x and @y parameters to the coordinates where the\nmenu is to be drawn.  To make the menu appear on a different\nmonitor than the mouse pointer, gtk_menu_set_monitor() must be\ncalled.", sinceVersion = Nothing}}
type C_MenuPositionFunc =
    Ptr Gtk.Menu.Menu ->
    Ptr Int32 ->
    Ptr Int32 ->
    Ptr CInt ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "menu", argType = TInterface (Name {namespace = "Gtk", name = "Menu"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkMenu.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of the #gint representing the horizontal\n    position where the menu shall be drawn.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionInout, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of the #gint representing the vertical position\n    where the menu shall be drawn.  This is an output parameter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "push_in", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "This parameter controls how menus placed outside\n    the monitor are handled.  If this is set to %TRUE and part of\n    the menu is outside the monitor then GTK+ pushes the window\n    into the visible area, effectively modifying the popup\n    position.  Note that moving and possibly resizing the menu\n    around will alter the scroll position to keep the menu items\n    \8220in place\8221, i.e. at the same monitor position they would have\n    been without resizing.  In practice, this behavior is only\n    useful for combobox popups or option menus and cannot be used\n    to simply confine a menu to monitor boundaries.  In that case,\n    changing the scroll offset is not desirable.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data supplied by the user in the gtk_menu_popup()\n    @data parameter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_MenuPositionFunc :: FunPtr C_MenuPositionFunc -> C_MenuPositionFunc

dynamic_MenuPositionFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Menu.IsMenu a) =>
    FunPtr C_MenuPositionFunc
    -> a
    {- ^ /@menu@/: a 'GI.Gtk.Objects.Menu.Menu'. -}
    -> Int32
    {- ^ /@x@/: address of the @/gint/@ representing the horizontal
    position where the menu shall be drawn. -}
    -> Int32
    {- ^ /@y@/: address of the @/gint/@ representing the vertical position
    where the menu shall be drawn.  This is an output parameter. -}
    -> Ptr ()
    {- ^ /@userData@/: the data supplied by the user in the 'GI.Gtk.Objects.Menu.menuPopup'
    /@data@/ parameter. -}
    -> m ((Int32, Int32, Bool))
dynamic_MenuPositionFunc __funPtr menu x y userData = liftIO $ do
    menu' <- unsafeManagedPtrCastPtr menu
    x' <- allocMem :: IO (Ptr Int32)
    poke x' x
    y' <- allocMem :: IO (Ptr Int32)
    poke y' y
    pushIn <- allocMem :: IO (Ptr CInt)
    (__dynamic_C_MenuPositionFunc __funPtr) menu' x' y' pushIn userData
    x'' <- peek x'
    y'' <- peek y'
    pushIn' <- peek pushIn
    let pushIn'' = (/= 0) pushIn'
    touchManagedPtr menu
    freeMem x'
    freeMem y'
    freeMem pushIn
    return (x'', y'', pushIn'')

foreign import ccall "wrapper"
    mk_MenuPositionFunc :: C_MenuPositionFunc -> IO (FunPtr C_MenuPositionFunc)

type MenuPositionFunc =
    Gtk.Menu.Menu ->
    Int32 ->
    Int32 ->
    IO ((Int32, Int32, Bool))

noMenuPositionFunc :: Maybe MenuPositionFunc
noMenuPositionFunc = Nothing

type MenuPositionFunc_WithClosures =
    Gtk.Menu.Menu ->
    Int32 ->
    Int32 ->
    Ptr () ->
    IO ((Int32, Int32, Bool))

noMenuPositionFunc_WithClosures :: Maybe MenuPositionFunc_WithClosures
noMenuPositionFunc_WithClosures = Nothing

drop_closures_MenuPositionFunc :: MenuPositionFunc -> MenuPositionFunc_WithClosures
drop_closures_MenuPositionFunc _f menu x y _ = _f menu x y

genClosure_MenuPositionFunc :: MenuPositionFunc -> IO Closure
genClosure_MenuPositionFunc cb = do
    let cb' = drop_closures_MenuPositionFunc cb
    let cb'' = wrap_MenuPositionFunc Nothing cb'
    mk_MenuPositionFunc cb'' >>= newCClosure


wrap_MenuPositionFunc ::
    Maybe (Ptr (FunPtr C_MenuPositionFunc)) ->
    MenuPositionFunc_WithClosures ->
    Ptr Gtk.Menu.Menu ->
    Ptr Int32 ->
    Ptr Int32 ->
    Ptr CInt ->
    Ptr () ->
    IO ()
wrap_MenuPositionFunc funptrptr _cb menu x y pushIn userData = do
    menu' <- (newObject Gtk.Menu.Menu) menu
    x' <- peek x
    y' <- peek y
    (outx, outy, outpushIn) <- _cb  menu' x' y' userData
    poke x outx
    poke y outy
    let outpushIn' = (fromIntegral . fromEnum) outpushIn
    poke pushIn outpushIn'
    maybeReleaseFunPtr funptrptr


-- callback MenuDetachFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "attach_widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkWidget that the menu is being detached from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "menu", argType = TInterface (Name {namespace = "Gtk", name = "Menu"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkMenu being detached.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A user function supplied when calling gtk_menu_attach_to_widget() which\nwill be called when the menu is later detached from the widget.", sinceVersion = Nothing}}
type C_MenuDetachFunc =
    Ptr Gtk.Widget.Widget ->
    Ptr Gtk.Menu.Menu ->
    IO ()

-- Args : [Arg {argCName = "attach_widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkWidget that the menu is being detached from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "menu", argType = TInterface (Name {namespace = "Gtk", name = "Menu"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkMenu being detached.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_MenuDetachFunc :: FunPtr C_MenuDetachFunc -> C_MenuDetachFunc

dynamic_MenuDetachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Menu.IsMenu b) =>
    FunPtr C_MenuDetachFunc
    -> a
    {- ^ /@attachWidget@/: the 'GI.Gtk.Objects.Widget.Widget' that the menu is being detached from. -}
    -> b
    {- ^ /@menu@/: the 'GI.Gtk.Objects.Menu.Menu' being detached. -}
    -> m ()
dynamic_MenuDetachFunc __funPtr attachWidget menu = liftIO $ do
    attachWidget' <- unsafeManagedPtrCastPtr attachWidget
    menu' <- unsafeManagedPtrCastPtr menu
    (__dynamic_C_MenuDetachFunc __funPtr) attachWidget' menu'
    touchManagedPtr attachWidget
    touchManagedPtr menu
    return ()

foreign import ccall "wrapper"
    mk_MenuDetachFunc :: C_MenuDetachFunc -> IO (FunPtr C_MenuDetachFunc)

type MenuDetachFunc =
    Gtk.Widget.Widget ->
    Gtk.Menu.Menu ->
    IO ()

noMenuDetachFunc :: Maybe MenuDetachFunc
noMenuDetachFunc = Nothing

genClosure_MenuDetachFunc :: MenuDetachFunc -> IO Closure
genClosure_MenuDetachFunc cb = do
    let cb' = wrap_MenuDetachFunc Nothing cb
    mk_MenuDetachFunc cb' >>= newCClosure


wrap_MenuDetachFunc ::
    Maybe (Ptr (FunPtr C_MenuDetachFunc)) ->
    MenuDetachFunc ->
    Ptr Gtk.Widget.Widget ->
    Ptr Gtk.Menu.Menu ->
    IO ()
wrap_MenuDetachFunc funptrptr _cb attachWidget menu = do
    attachWidget' <- (newObject Gtk.Widget.Widget) attachWidget
    menu' <- (newObject Gtk.Menu.Menu) menu
    _cb  attachWidget' menu'
    maybeReleaseFunPtr funptrptr


-- callback ListBoxUpdateHeaderFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the row to update", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "before", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the row before @row, or %NULL if it is first", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Whenever @row changes or which row is before @row changes this\nis called, which lets you update the header on @row. You may\nremove or set a new one via gtk_list_box_row_set_header() or\njust change the state of the current header widget.", sinceVersion = Just "3.10"}}
type C_ListBoxUpdateHeaderFunc =
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the row to update", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "before", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the row before @row, or %NULL if it is first", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ListBoxUpdateHeaderFunc :: FunPtr C_ListBoxUpdateHeaderFunc -> C_ListBoxUpdateHeaderFunc

dynamic_ListBoxUpdateHeaderFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a, Gtk.ListBoxRow.IsListBoxRow b) =>
    FunPtr C_ListBoxUpdateHeaderFunc
    -> a
    {- ^ /@row@/: the row to update -}
    -> Maybe (b)
    {- ^ /@before@/: the row before /@row@/, or 'Nothing' if it is first -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m ()
dynamic_ListBoxUpdateHeaderFunc __funPtr row before userData = liftIO $ do
    row' <- unsafeManagedPtrCastPtr row
    maybeBefore <- case before of
        Nothing -> return nullPtr
        Just jBefore -> do
            jBefore' <- unsafeManagedPtrCastPtr jBefore
            return jBefore'
    (__dynamic_C_ListBoxUpdateHeaderFunc __funPtr) row' maybeBefore userData
    touchManagedPtr row
    whenJust before touchManagedPtr
    return ()

foreign import ccall "wrapper"
    mk_ListBoxUpdateHeaderFunc :: C_ListBoxUpdateHeaderFunc -> IO (FunPtr C_ListBoxUpdateHeaderFunc)

type ListBoxUpdateHeaderFunc =
    Gtk.ListBoxRow.ListBoxRow ->
    Maybe Gtk.ListBoxRow.ListBoxRow ->
    IO ()

noListBoxUpdateHeaderFunc :: Maybe ListBoxUpdateHeaderFunc
noListBoxUpdateHeaderFunc = Nothing

type ListBoxUpdateHeaderFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow ->
    Maybe Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()

noListBoxUpdateHeaderFunc_WithClosures :: Maybe ListBoxUpdateHeaderFunc_WithClosures
noListBoxUpdateHeaderFunc_WithClosures = Nothing

drop_closures_ListBoxUpdateHeaderFunc :: ListBoxUpdateHeaderFunc -> ListBoxUpdateHeaderFunc_WithClosures
drop_closures_ListBoxUpdateHeaderFunc _f row before _ = _f row before

genClosure_ListBoxUpdateHeaderFunc :: ListBoxUpdateHeaderFunc -> IO Closure
genClosure_ListBoxUpdateHeaderFunc cb = do
    let cb' = drop_closures_ListBoxUpdateHeaderFunc cb
    let cb'' = wrap_ListBoxUpdateHeaderFunc Nothing cb'
    mk_ListBoxUpdateHeaderFunc cb'' >>= newCClosure


wrap_ListBoxUpdateHeaderFunc ::
    Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc)) ->
    ListBoxUpdateHeaderFunc_WithClosures ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()
wrap_ListBoxUpdateHeaderFunc funptrptr _cb row before userData = do
    row' <- (newObject Gtk.ListBoxRow.ListBoxRow) row
    maybeBefore <-
        if before == nullPtr
        then return Nothing
        else do
            before' <- (newObject Gtk.ListBoxRow.ListBoxRow) before
            return $ Just before'
    _cb  row' maybeBefore userData
    maybeReleaseFunPtr funptrptr


-- callback ListBoxSortFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "< 0 if @row1 should be before @row2, 0 if they are\n    equal and > 0 otherwise", sinceVersion = Nothing}, args = [Arg {argCName = "row1", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "row2", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Compare two rows to determine which should be first.", sinceVersion = Just "3.10"}}
type C_ListBoxSortFunc =
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "row1", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "row2", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ListBoxSortFunc :: FunPtr C_ListBoxSortFunc -> C_ListBoxSortFunc

dynamic_ListBoxSortFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a, Gtk.ListBoxRow.IsListBoxRow b) =>
    FunPtr C_ListBoxSortFunc
    -> a
    {- ^ /@row1@/: the first row -}
    -> b
    {- ^ /@row2@/: the second row -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m Int32
    {- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
    equal and > 0 otherwise -}
dynamic_ListBoxSortFunc __funPtr row1 row2 userData = liftIO $ do
    row1' <- unsafeManagedPtrCastPtr row1
    row2' <- unsafeManagedPtrCastPtr row2
    result <- (__dynamic_C_ListBoxSortFunc __funPtr) row1' row2' userData
    touchManagedPtr row1
    touchManagedPtr row2
    return result

foreign import ccall "wrapper"
    mk_ListBoxSortFunc :: C_ListBoxSortFunc -> IO (FunPtr C_ListBoxSortFunc)

type ListBoxSortFunc =
    Gtk.ListBoxRow.ListBoxRow ->
    Gtk.ListBoxRow.ListBoxRow ->
    IO Int32

noListBoxSortFunc :: Maybe ListBoxSortFunc
noListBoxSortFunc = Nothing

type ListBoxSortFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow ->
    Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO Int32

noListBoxSortFunc_WithClosures :: Maybe ListBoxSortFunc_WithClosures
noListBoxSortFunc_WithClosures = Nothing

drop_closures_ListBoxSortFunc :: ListBoxSortFunc -> ListBoxSortFunc_WithClosures
drop_closures_ListBoxSortFunc _f row1 row2 _ = _f row1 row2

genClosure_ListBoxSortFunc :: ListBoxSortFunc -> IO Closure
genClosure_ListBoxSortFunc cb = do
    let cb' = drop_closures_ListBoxSortFunc cb
    let cb'' = wrap_ListBoxSortFunc Nothing cb'
    mk_ListBoxSortFunc cb'' >>= newCClosure


wrap_ListBoxSortFunc ::
    Maybe (Ptr (FunPtr C_ListBoxSortFunc)) ->
    ListBoxSortFunc_WithClosures ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO Int32
wrap_ListBoxSortFunc funptrptr _cb row1 row2 userData = do
    row1' <- (newObject Gtk.ListBoxRow.ListBoxRow) row1
    row2' <- (newObject Gtk.ListBoxRow.ListBoxRow) row2
    result <- _cb  row1' row2' userData
    maybeReleaseFunPtr funptrptr
    return result


-- callback ListBoxForeachFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "box", argType = TInterface (Name {namespace = "Gtk", name = "ListBox"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkListBox", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkListBoxRow", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_list_box_selected_foreach().\nIt will be called on every selected child of the @box.", sinceVersion = Just "3.14"}}
type C_ListBoxForeachFunc =
    Ptr Gtk.ListBox.ListBox ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "box", argType = TInterface (Name {namespace = "Gtk", name = "ListBox"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkListBox", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkListBoxRow", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ListBoxForeachFunc :: FunPtr C_ListBoxForeachFunc -> C_ListBoxForeachFunc

dynamic_ListBoxForeachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBox.IsListBox a, Gtk.ListBoxRow.IsListBoxRow b) =>
    FunPtr C_ListBoxForeachFunc
    -> a
    {- ^ /@box@/: a 'GI.Gtk.Objects.ListBox.ListBox' -}
    -> b
    {- ^ /@row@/: a 'GI.Gtk.Objects.ListBoxRow.ListBoxRow' -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m ()
dynamic_ListBoxForeachFunc __funPtr box row userData = liftIO $ do
    box' <- unsafeManagedPtrCastPtr box
    row' <- unsafeManagedPtrCastPtr row
    (__dynamic_C_ListBoxForeachFunc __funPtr) box' row' userData
    touchManagedPtr box
    touchManagedPtr row
    return ()

foreign import ccall "wrapper"
    mk_ListBoxForeachFunc :: C_ListBoxForeachFunc -> IO (FunPtr C_ListBoxForeachFunc)

type ListBoxForeachFunc =
    Gtk.ListBox.ListBox ->
    Gtk.ListBoxRow.ListBoxRow ->
    IO ()

noListBoxForeachFunc :: Maybe ListBoxForeachFunc
noListBoxForeachFunc = Nothing

type ListBoxForeachFunc_WithClosures =
    Gtk.ListBox.ListBox ->
    Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()

noListBoxForeachFunc_WithClosures :: Maybe ListBoxForeachFunc_WithClosures
noListBoxForeachFunc_WithClosures = Nothing

drop_closures_ListBoxForeachFunc :: ListBoxForeachFunc -> ListBoxForeachFunc_WithClosures
drop_closures_ListBoxForeachFunc _f box row _ = _f box row

genClosure_ListBoxForeachFunc :: ListBoxForeachFunc -> IO Closure
genClosure_ListBoxForeachFunc cb = do
    let cb' = drop_closures_ListBoxForeachFunc cb
    let cb'' = wrap_ListBoxForeachFunc Nothing cb'
    mk_ListBoxForeachFunc cb'' >>= newCClosure


wrap_ListBoxForeachFunc ::
    Maybe (Ptr (FunPtr C_ListBoxForeachFunc)) ->
    ListBoxForeachFunc_WithClosures ->
    Ptr Gtk.ListBox.ListBox ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO ()
wrap_ListBoxForeachFunc funptrptr _cb box row userData = do
    box' <- (newObject Gtk.ListBox.ListBox) box
    row' <- (newObject Gtk.ListBoxRow.ListBoxRow) row
    _cb  box' row' userData
    maybeReleaseFunPtr funptrptr


-- callback ListBoxFilterFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the row should be visible, %FALSE otherwise", sinceVersion = Nothing}, args = [Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the row that may be filtered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Will be called whenever the row changes or is added and lets you control\nif the row should be visible or not.", sinceVersion = Just "3.10"}}
type C_ListBoxFilterFunc =
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "row", argType = TInterface (Name {namespace = "Gtk", name = "ListBoxRow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the row that may be filtered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ListBoxFilterFunc :: FunPtr C_ListBoxFilterFunc -> C_ListBoxFilterFunc

dynamic_ListBoxFilterFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a) =>
    FunPtr C_ListBoxFilterFunc
    -> a
    {- ^ /@row@/: the row that may be filtered -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the row should be visible, 'False' otherwise -}
dynamic_ListBoxFilterFunc __funPtr row userData = liftIO $ do
    row' <- unsafeManagedPtrCastPtr row
    result <- (__dynamic_C_ListBoxFilterFunc __funPtr) row' userData
    let result' = (/= 0) result
    touchManagedPtr row
    return result'

foreign import ccall "wrapper"
    mk_ListBoxFilterFunc :: C_ListBoxFilterFunc -> IO (FunPtr C_ListBoxFilterFunc)

type ListBoxFilterFunc =
    Gtk.ListBoxRow.ListBoxRow ->
    IO Bool

noListBoxFilterFunc :: Maybe ListBoxFilterFunc
noListBoxFilterFunc = Nothing

type ListBoxFilterFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO Bool

noListBoxFilterFunc_WithClosures :: Maybe ListBoxFilterFunc_WithClosures
noListBoxFilterFunc_WithClosures = Nothing

drop_closures_ListBoxFilterFunc :: ListBoxFilterFunc -> ListBoxFilterFunc_WithClosures
drop_closures_ListBoxFilterFunc _f row _ = _f row

genClosure_ListBoxFilterFunc :: ListBoxFilterFunc -> IO Closure
genClosure_ListBoxFilterFunc cb = do
    let cb' = drop_closures_ListBoxFilterFunc cb
    let cb'' = wrap_ListBoxFilterFunc Nothing cb'
    mk_ListBoxFilterFunc cb'' >>= newCClosure


wrap_ListBoxFilterFunc ::
    Maybe (Ptr (FunPtr C_ListBoxFilterFunc)) ->
    ListBoxFilterFunc_WithClosures ->
    Ptr Gtk.ListBoxRow.ListBoxRow ->
    Ptr () ->
    IO CInt
wrap_ListBoxFilterFunc funptrptr _cb row userData = do
    row' <- (newObject Gtk.ListBoxRow.ListBoxRow) row
    result <- _cb  row' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback ListBoxCreateWidgetFunc
--          -> Callable {returnType = Just (TInterface (Name {namespace = "Gtk", name = "Widget"})), returnMayBeNull = False, returnTransfer = TransferEverything, returnDocumentation = Documentation {rawDocText = Just "a #GtkWidget that represents @item", sinceVersion = Nothing}, args = [Arg {argCName = "item", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the item from the model for which to create a widget for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Called for list boxes that are bound to a #GListModel with\ngtk_list_box_bind_model() for each item that gets added to the model.\n\nVersions of GTK+ prior to 3.18 called gtk_widget_show_all() on the rows\ncreated by the GtkListBoxCreateWidgetFunc, but this forced all widgets\ninside the row to be shown, and is no longer the case. Applications should\nbe updated to show the desired row widgets.", sinceVersion = Just "3.16"}}
type C_ListBoxCreateWidgetFunc =
    Ptr GObject.Object.Object ->
    Ptr () ->
    IO (Ptr Gtk.Widget.Widget)

-- Args : [Arg {argCName = "item", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the item from the model for which to create a widget for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "Widget"}))
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ListBoxCreateWidgetFunc :: FunPtr C_ListBoxCreateWidgetFunc -> C_ListBoxCreateWidgetFunc

dynamic_ListBoxCreateWidgetFunc ::
    (B.CallStack.HasCallStack, MonadIO m, GObject.Object.IsObject a) =>
    FunPtr C_ListBoxCreateWidgetFunc
    -> a
    {- ^ /@item@/: the item from the model for which to create a widget for -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m Gtk.Widget.Widget
    {- ^ __Returns:__ a 'GI.Gtk.Objects.Widget.Widget' that represents /@item@/ -}
dynamic_ListBoxCreateWidgetFunc __funPtr item userData = liftIO $ do
    item' <- unsafeManagedPtrCastPtr item
    result <- (__dynamic_C_ListBoxCreateWidgetFunc __funPtr) item' userData
    checkUnexpectedReturnNULL "listBoxCreateWidgetFunc" result
    result' <- (wrapObject Gtk.Widget.Widget) result
    touchManagedPtr item
    return result'

foreign import ccall "wrapper"
    mk_ListBoxCreateWidgetFunc :: C_ListBoxCreateWidgetFunc -> IO (FunPtr C_ListBoxCreateWidgetFunc)

type ListBoxCreateWidgetFunc =
    GObject.Object.Object ->
    IO Gtk.Widget.Widget

noListBoxCreateWidgetFunc :: Maybe ListBoxCreateWidgetFunc
noListBoxCreateWidgetFunc = Nothing

type ListBoxCreateWidgetFunc_WithClosures =
    GObject.Object.Object ->
    Ptr () ->
    IO Gtk.Widget.Widget

noListBoxCreateWidgetFunc_WithClosures :: Maybe ListBoxCreateWidgetFunc_WithClosures
noListBoxCreateWidgetFunc_WithClosures = Nothing

drop_closures_ListBoxCreateWidgetFunc :: ListBoxCreateWidgetFunc -> ListBoxCreateWidgetFunc_WithClosures
drop_closures_ListBoxCreateWidgetFunc _f item _ = _f item

genClosure_ListBoxCreateWidgetFunc :: ListBoxCreateWidgetFunc -> IO Closure
genClosure_ListBoxCreateWidgetFunc cb = do
    let cb' = drop_closures_ListBoxCreateWidgetFunc cb
    let cb'' = wrap_ListBoxCreateWidgetFunc Nothing cb'
    mk_ListBoxCreateWidgetFunc cb'' >>= newCClosure


wrap_ListBoxCreateWidgetFunc ::
    Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc)) ->
    ListBoxCreateWidgetFunc_WithClosures ->
    Ptr GObject.Object.Object ->
    Ptr () ->
    IO (Ptr Gtk.Widget.Widget)
wrap_ListBoxCreateWidgetFunc funptrptr _cb item userData = do
    item' <- (newObject GObject.Object.Object) item
    result <- _cb  item' userData
    maybeReleaseFunPtr funptrptr
    result' <- B.ManagedPtr.disownObject result
    return result'


-- callback KeySnoopFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE to stop further processing of @event, %FALSE to continue.", sinceVersion = Nothing}, args = [Arg {argCName = "grab_widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget to which the event will be delivered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface (Name {namespace = "Gdk", name = "EventKey"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the key event", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data supplied to gtk_key_snooper_install()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Key snooper functions are called before normal event delivery.\nThey can be used to implement custom key event handling.", sinceVersion = Nothing}}
type C_KeySnoopFunc =
    Ptr Gtk.Widget.Widget ->
    Ptr Gdk.EventKey.EventKey ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "grab_widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget to which the event will be delivered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface (Name {namespace = "Gdk", name = "EventKey"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the key event", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data supplied to gtk_key_snooper_install()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_KeySnoopFunc :: FunPtr C_KeySnoopFunc -> C_KeySnoopFunc

dynamic_KeySnoopFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
    FunPtr C_KeySnoopFunc
    -> a
    {- ^ /@grabWidget@/: the widget to which the event will be delivered -}
    -> Gdk.EventKey.EventKey
    {- ^ /@event@/: the key event -}
    -> Ptr ()
    {- ^ /@funcData@/: data supplied to @/gtk_key_snooper_install()/@ -}
    -> m Int32
    {- ^ __Returns:__ 'True' to stop further processing of /@event@/, 'False' to continue. -}
dynamic_KeySnoopFunc __funPtr grabWidget event funcData = liftIO $ do
    grabWidget' <- unsafeManagedPtrCastPtr grabWidget
    event' <- unsafeManagedPtrGetPtr event
    result <- (__dynamic_C_KeySnoopFunc __funPtr) grabWidget' event' funcData
    touchManagedPtr grabWidget
    touchManagedPtr event
    return result

foreign import ccall "wrapper"
    mk_KeySnoopFunc :: C_KeySnoopFunc -> IO (FunPtr C_KeySnoopFunc)

type KeySnoopFunc =
    Gtk.Widget.Widget ->
    Gdk.EventKey.EventKey ->
    IO Int32

noKeySnoopFunc :: Maybe KeySnoopFunc
noKeySnoopFunc = Nothing

type KeySnoopFunc_WithClosures =
    Gtk.Widget.Widget ->
    Gdk.EventKey.EventKey ->
    Ptr () ->
    IO Int32

noKeySnoopFunc_WithClosures :: Maybe KeySnoopFunc_WithClosures
noKeySnoopFunc_WithClosures = Nothing

drop_closures_KeySnoopFunc :: KeySnoopFunc -> KeySnoopFunc_WithClosures
drop_closures_KeySnoopFunc _f grabWidget event _ = _f grabWidget event

genClosure_KeySnoopFunc :: KeySnoopFunc -> IO Closure
genClosure_KeySnoopFunc cb = do
    let cb' = drop_closures_KeySnoopFunc cb
    let cb'' = wrap_KeySnoopFunc Nothing cb'
    mk_KeySnoopFunc cb'' >>= newCClosure


wrap_KeySnoopFunc ::
    Maybe (Ptr (FunPtr C_KeySnoopFunc)) ->
    KeySnoopFunc_WithClosures ->
    Ptr Gtk.Widget.Widget ->
    Ptr Gdk.EventKey.EventKey ->
    Ptr () ->
    IO Int32
wrap_KeySnoopFunc funptrptr _cb grabWidget event funcData = do
    grabWidget' <- (newObject Gtk.Widget.Widget) grabWidget
    event' <- (newPtr Gdk.EventKey.EventKey) event
    result <- _cb  grabWidget' event' funcData
    maybeReleaseFunPtr funptrptr
    return result


-- callback IconViewForeachFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "icon_view", argType = TInterface (Name {namespace = "Gtk", name = "IconView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_icon_view_selected_foreach() to map all\nselected rows.  It will be called on every selected row in the view.", sinceVersion = Nothing}}
type C_IconViewForeachFunc =
    Ptr Gtk.IconView.IconView ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "icon_view", argType = TInterface (Name {namespace = "Gtk", name = "IconView"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconView", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GtkTreePath of a selected row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_IconViewForeachFunc :: FunPtr C_IconViewForeachFunc -> C_IconViewForeachFunc

dynamic_IconViewForeachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.IconView.IsIconView a) =>
    FunPtr C_IconViewForeachFunc
    -> a
    {- ^ /@iconView@/: a 'GI.Gtk.Objects.IconView.IconView' -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The 'GI.Gtk.Structs.TreePath.TreePath' of a selected row -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> m ()
dynamic_IconViewForeachFunc __funPtr iconView path data_ = liftIO $ do
    iconView' <- unsafeManagedPtrCastPtr iconView
    path' <- unsafeManagedPtrGetPtr path
    (__dynamic_C_IconViewForeachFunc __funPtr) iconView' path' data_
    touchManagedPtr iconView
    touchManagedPtr path
    return ()

foreign import ccall "wrapper"
    mk_IconViewForeachFunc :: C_IconViewForeachFunc -> IO (FunPtr C_IconViewForeachFunc)

type IconViewForeachFunc =
    Gtk.IconView.IconView ->
    Gtk.TreePath.TreePath ->
    IO ()

noIconViewForeachFunc :: Maybe IconViewForeachFunc
noIconViewForeachFunc = Nothing

type IconViewForeachFunc_WithClosures =
    Gtk.IconView.IconView ->
    Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()

noIconViewForeachFunc_WithClosures :: Maybe IconViewForeachFunc_WithClosures
noIconViewForeachFunc_WithClosures = Nothing

drop_closures_IconViewForeachFunc :: IconViewForeachFunc -> IconViewForeachFunc_WithClosures
drop_closures_IconViewForeachFunc _f iconView path _ = _f iconView path

genClosure_IconViewForeachFunc :: IconViewForeachFunc -> IO Closure
genClosure_IconViewForeachFunc cb = do
    let cb' = drop_closures_IconViewForeachFunc cb
    let cb'' = wrap_IconViewForeachFunc Nothing cb'
    mk_IconViewForeachFunc cb'' >>= newCClosure


wrap_IconViewForeachFunc ::
    Maybe (Ptr (FunPtr C_IconViewForeachFunc)) ->
    IconViewForeachFunc_WithClosures ->
    Ptr Gtk.IconView.IconView ->
    Ptr Gtk.TreePath.TreePath ->
    Ptr () ->
    IO ()
wrap_IconViewForeachFunc funptrptr _cb iconView path data_ = do
    iconView' <- (newObject Gtk.IconView.IconView) iconView
    B.ManagedPtr.withTransient Gtk.TreePath.TreePath path $ \path' -> do
        _cb  iconView' path' data_
        maybeReleaseFunPtr funptrptr


-- callback FontFilterFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the font should be displayed", sinceVersion = Nothing}, args = [Arg {argCName = "family", argType = TInterface (Name {namespace = "Pango", name = "FontFamily"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoFontFamily", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "face", argType = TInterface (Name {namespace = "Pango", name = "FontFace"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoFontFace belonging to @family", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_font_chooser_set_filter_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of function that is used for deciding what fonts get\nshown in a #GtkFontChooser. See gtk_font_chooser_set_filter_func().", sinceVersion = Nothing}}
type C_FontFilterFunc =
    Ptr Pango.FontFamily.FontFamily ->
    Ptr Pango.FontFace.FontFace ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "family", argType = TInterface (Name {namespace = "Pango", name = "FontFamily"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoFontFamily", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "face", argType = TInterface (Name {namespace = "Pango", name = "FontFace"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoFontFace belonging to @family", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_font_chooser_set_filter_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FontFilterFunc :: FunPtr C_FontFilterFunc -> C_FontFilterFunc

dynamic_FontFilterFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Pango.FontFamily.IsFontFamily a, Pango.FontFace.IsFontFace b) =>
    FunPtr C_FontFilterFunc
    -> a
    {- ^ /@family@/: a 'GI.Pango.Objects.FontFamily.FontFamily' -}
    -> b
    {- ^ /@face@/: a 'GI.Pango.Objects.FontFace.FontFace' belonging to /@family@/ -}
    -> Ptr ()
    {- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.FontChooser.fontChooserSetFilterFunc' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the font should be displayed -}
dynamic_FontFilterFunc __funPtr family face data_ = liftIO $ do
    family' <- unsafeManagedPtrCastPtr family
    face' <- unsafeManagedPtrCastPtr face
    result <- (__dynamic_C_FontFilterFunc __funPtr) family' face' data_
    let result' = (/= 0) result
    touchManagedPtr family
    touchManagedPtr face
    return result'

foreign import ccall "wrapper"
    mk_FontFilterFunc :: C_FontFilterFunc -> IO (FunPtr C_FontFilterFunc)

type FontFilterFunc =
    Pango.FontFamily.FontFamily ->
    Pango.FontFace.FontFace ->
    IO Bool

noFontFilterFunc :: Maybe FontFilterFunc
noFontFilterFunc = Nothing

type FontFilterFunc_WithClosures =
    Pango.FontFamily.FontFamily ->
    Pango.FontFace.FontFace ->
    Ptr () ->
    IO Bool

noFontFilterFunc_WithClosures :: Maybe FontFilterFunc_WithClosures
noFontFilterFunc_WithClosures = Nothing

drop_closures_FontFilterFunc :: FontFilterFunc -> FontFilterFunc_WithClosures
drop_closures_FontFilterFunc _f family face _ = _f family face

genClosure_FontFilterFunc :: FontFilterFunc -> IO Closure
genClosure_FontFilterFunc cb = do
    let cb' = drop_closures_FontFilterFunc cb
    let cb'' = wrap_FontFilterFunc Nothing cb'
    mk_FontFilterFunc cb'' >>= newCClosure


wrap_FontFilterFunc ::
    Maybe (Ptr (FunPtr C_FontFilterFunc)) ->
    FontFilterFunc_WithClosures ->
    Ptr Pango.FontFamily.FontFamily ->
    Ptr Pango.FontFace.FontFace ->
    Ptr () ->
    IO CInt
wrap_FontFilterFunc funptrptr _cb family face data_ = do
    family' <- (newObject Pango.FontFamily.FontFamily) family
    face' <- (newObject Pango.FontFace.FontFace) face
    result <- _cb  family' face' data_
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback FlowBoxSortFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "< 0 if @child1 should be before @child2, 0 if\n    the are equal, and > 0 otherwise", sinceVersion = Nothing}, args = [Arg {argCName = "child1", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first child", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child2", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second child", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to compare two children to determine which\nshould come first.", sinceVersion = Just "3.12"}}
type C_FlowBoxSortFunc =
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "child1", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first child", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child2", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second child", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FlowBoxSortFunc :: FunPtr C_FlowBoxSortFunc -> C_FlowBoxSortFunc

dynamic_FlowBoxSortFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBoxChild.IsFlowBoxChild a, Gtk.FlowBoxChild.IsFlowBoxChild b) =>
    FunPtr C_FlowBoxSortFunc
    -> a
    {- ^ /@child1@/: the first child -}
    -> b
    {- ^ /@child2@/: the second child -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m Int32
    {- ^ __Returns:__ \< 0 if /@child1@/ should be before /@child2@/, 0 if
    the are equal, and > 0 otherwise -}
dynamic_FlowBoxSortFunc __funPtr child1 child2 userData = liftIO $ do
    child1' <- unsafeManagedPtrCastPtr child1
    child2' <- unsafeManagedPtrCastPtr child2
    result <- (__dynamic_C_FlowBoxSortFunc __funPtr) child1' child2' userData
    touchManagedPtr child1
    touchManagedPtr child2
    return result

foreign import ccall "wrapper"
    mk_FlowBoxSortFunc :: C_FlowBoxSortFunc -> IO (FunPtr C_FlowBoxSortFunc)

type FlowBoxSortFunc =
    Gtk.FlowBoxChild.FlowBoxChild ->
    Gtk.FlowBoxChild.FlowBoxChild ->
    IO Int32

noFlowBoxSortFunc :: Maybe FlowBoxSortFunc
noFlowBoxSortFunc = Nothing

type FlowBoxSortFunc_WithClosures =
    Gtk.FlowBoxChild.FlowBoxChild ->
    Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO Int32

noFlowBoxSortFunc_WithClosures :: Maybe FlowBoxSortFunc_WithClosures
noFlowBoxSortFunc_WithClosures = Nothing

drop_closures_FlowBoxSortFunc :: FlowBoxSortFunc -> FlowBoxSortFunc_WithClosures
drop_closures_FlowBoxSortFunc _f child1 child2 _ = _f child1 child2

genClosure_FlowBoxSortFunc :: FlowBoxSortFunc -> IO Closure
genClosure_FlowBoxSortFunc cb = do
    let cb' = drop_closures_FlowBoxSortFunc cb
    let cb'' = wrap_FlowBoxSortFunc Nothing cb'
    mk_FlowBoxSortFunc cb'' >>= newCClosure


wrap_FlowBoxSortFunc ::
    Maybe (Ptr (FunPtr C_FlowBoxSortFunc)) ->
    FlowBoxSortFunc_WithClosures ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO Int32
wrap_FlowBoxSortFunc funptrptr _cb child1 child2 userData = do
    child1' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child1
    child2' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child2
    result <- _cb  child1' child2' userData
    maybeReleaseFunPtr funptrptr
    return result


-- callback FlowBoxForeachFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "box", argType = TInterface (Name {namespace = "Gtk", name = "FlowBox"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBox", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBoxChild", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_flow_box_selected_foreach().\nIt will be called on every selected child of the @box.", sinceVersion = Just "3.12"}}
type C_FlowBoxForeachFunc =
    Ptr Gtk.FlowBox.FlowBox ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "box", argType = TInterface (Name {namespace = "Gtk", name = "FlowBox"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBox", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBoxChild", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FlowBoxForeachFunc :: FunPtr C_FlowBoxForeachFunc -> C_FlowBoxForeachFunc

dynamic_FlowBoxForeachFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBox.IsFlowBox a, Gtk.FlowBoxChild.IsFlowBoxChild b) =>
    FunPtr C_FlowBoxForeachFunc
    -> a
    {- ^ /@box@/: a 'GI.Gtk.Objects.FlowBox.FlowBox' -}
    -> b
    {- ^ /@child@/: a 'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild' -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m ()
dynamic_FlowBoxForeachFunc __funPtr box child userData = liftIO $ do
    box' <- unsafeManagedPtrCastPtr box
    child' <- unsafeManagedPtrCastPtr child
    (__dynamic_C_FlowBoxForeachFunc __funPtr) box' child' userData
    touchManagedPtr box
    touchManagedPtr child
    return ()

foreign import ccall "wrapper"
    mk_FlowBoxForeachFunc :: C_FlowBoxForeachFunc -> IO (FunPtr C_FlowBoxForeachFunc)

type FlowBoxForeachFunc =
    Gtk.FlowBox.FlowBox ->
    Gtk.FlowBoxChild.FlowBoxChild ->
    IO ()

noFlowBoxForeachFunc :: Maybe FlowBoxForeachFunc
noFlowBoxForeachFunc = Nothing

type FlowBoxForeachFunc_WithClosures =
    Gtk.FlowBox.FlowBox ->
    Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO ()

noFlowBoxForeachFunc_WithClosures :: Maybe FlowBoxForeachFunc_WithClosures
noFlowBoxForeachFunc_WithClosures = Nothing

drop_closures_FlowBoxForeachFunc :: FlowBoxForeachFunc -> FlowBoxForeachFunc_WithClosures
drop_closures_FlowBoxForeachFunc _f box child _ = _f box child

genClosure_FlowBoxForeachFunc :: FlowBoxForeachFunc -> IO Closure
genClosure_FlowBoxForeachFunc cb = do
    let cb' = drop_closures_FlowBoxForeachFunc cb
    let cb'' = wrap_FlowBoxForeachFunc Nothing cb'
    mk_FlowBoxForeachFunc cb'' >>= newCClosure


wrap_FlowBoxForeachFunc ::
    Maybe (Ptr (FunPtr C_FlowBoxForeachFunc)) ->
    FlowBoxForeachFunc_WithClosures ->
    Ptr Gtk.FlowBox.FlowBox ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO ()
wrap_FlowBoxForeachFunc funptrptr _cb box child userData = do
    box' <- (newObject Gtk.FlowBox.FlowBox) box
    child' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child
    _cb  box' child' userData
    maybeReleaseFunPtr funptrptr


-- callback FlowBoxFilterFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the row should be visible, %FALSE otherwise", sinceVersion = Nothing}, args = [Arg {argCName = "child", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBoxChild that may be filtered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function that will be called whenrever a child changes\nor is added. It lets you control if the child should be\nvisible or not.", sinceVersion = Just "3.12"}}
type C_FlowBoxFilterFunc =
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "child", argType = TInterface (Name {namespace = "Gtk", name = "FlowBoxChild"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFlowBoxChild that may be filtered", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FlowBoxFilterFunc :: FunPtr C_FlowBoxFilterFunc -> C_FlowBoxFilterFunc

dynamic_FlowBoxFilterFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBoxChild.IsFlowBoxChild a) =>
    FunPtr C_FlowBoxFilterFunc
    -> a
    {- ^ /@child@/: a 'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild' that may be filtered -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the row should be visible, 'False' otherwise -}
dynamic_FlowBoxFilterFunc __funPtr child userData = liftIO $ do
    child' <- unsafeManagedPtrCastPtr child
    result <- (__dynamic_C_FlowBoxFilterFunc __funPtr) child' userData
    let result' = (/= 0) result
    touchManagedPtr child
    return result'

foreign import ccall "wrapper"
    mk_FlowBoxFilterFunc :: C_FlowBoxFilterFunc -> IO (FunPtr C_FlowBoxFilterFunc)

type FlowBoxFilterFunc =
    Gtk.FlowBoxChild.FlowBoxChild ->
    IO Bool

noFlowBoxFilterFunc :: Maybe FlowBoxFilterFunc
noFlowBoxFilterFunc = Nothing

type FlowBoxFilterFunc_WithClosures =
    Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO Bool

noFlowBoxFilterFunc_WithClosures :: Maybe FlowBoxFilterFunc_WithClosures
noFlowBoxFilterFunc_WithClosures = Nothing

drop_closures_FlowBoxFilterFunc :: FlowBoxFilterFunc -> FlowBoxFilterFunc_WithClosures
drop_closures_FlowBoxFilterFunc _f child _ = _f child

genClosure_FlowBoxFilterFunc :: FlowBoxFilterFunc -> IO Closure
genClosure_FlowBoxFilterFunc cb = do
    let cb' = drop_closures_FlowBoxFilterFunc cb
    let cb'' = wrap_FlowBoxFilterFunc Nothing cb'
    mk_FlowBoxFilterFunc cb'' >>= newCClosure


wrap_FlowBoxFilterFunc ::
    Maybe (Ptr (FunPtr C_FlowBoxFilterFunc)) ->
    FlowBoxFilterFunc_WithClosures ->
    Ptr Gtk.FlowBoxChild.FlowBoxChild ->
    Ptr () ->
    IO CInt
wrap_FlowBoxFilterFunc funptrptr _cb child userData = do
    child' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child
    result <- _cb  child' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback FlowBoxCreateWidgetFunc
--          -> Callable {returnType = Just (TInterface (Name {namespace = "Gtk", name = "Widget"})), returnMayBeNull = False, returnTransfer = TransferEverything, returnDocumentation = Documentation {rawDocText = Just "a #GtkWidget that represents @item", sinceVersion = Nothing}, args = [Arg {argCName = "item", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the item from the model for which to create a widget for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data from gtk_flow_box_bind_model()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Called for flow boxes that are bound to a #GListModel with\ngtk_flow_box_bind_model() for each item that gets added to the model.", sinceVersion = Just "3.18"}}
type C_FlowBoxCreateWidgetFunc =
    Ptr () ->
    Ptr () ->
    IO (Ptr Gtk.Widget.Widget)

-- Args : [Arg {argCName = "item", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the item from the model for which to create a widget for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data from gtk_flow_box_bind_model()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "Widget"}))
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FlowBoxCreateWidgetFunc :: FunPtr C_FlowBoxCreateWidgetFunc -> C_FlowBoxCreateWidgetFunc

dynamic_FlowBoxCreateWidgetFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_FlowBoxCreateWidgetFunc
    -> Ptr ()
    {- ^ /@item@/: the item from the model for which to create a widget for -}
    -> Ptr ()
    {- ^ /@userData@/: user data from 'GI.Gtk.Objects.FlowBox.flowBoxBindModel' -}
    -> m Gtk.Widget.Widget
    {- ^ __Returns:__ a 'GI.Gtk.Objects.Widget.Widget' that represents /@item@/ -}
dynamic_FlowBoxCreateWidgetFunc __funPtr item userData = liftIO $ do
    result <- (__dynamic_C_FlowBoxCreateWidgetFunc __funPtr) item userData
    checkUnexpectedReturnNULL "flowBoxCreateWidgetFunc" result
    result' <- (wrapObject Gtk.Widget.Widget) result
    return result'

foreign import ccall "wrapper"
    mk_FlowBoxCreateWidgetFunc :: C_FlowBoxCreateWidgetFunc -> IO (FunPtr C_FlowBoxCreateWidgetFunc)

type FlowBoxCreateWidgetFunc =
    Ptr () ->
    IO Gtk.Widget.Widget

noFlowBoxCreateWidgetFunc :: Maybe FlowBoxCreateWidgetFunc
noFlowBoxCreateWidgetFunc = Nothing

type FlowBoxCreateWidgetFunc_WithClosures =
    Ptr () ->
    Ptr () ->
    IO Gtk.Widget.Widget

noFlowBoxCreateWidgetFunc_WithClosures :: Maybe FlowBoxCreateWidgetFunc_WithClosures
noFlowBoxCreateWidgetFunc_WithClosures = Nothing

drop_closures_FlowBoxCreateWidgetFunc :: FlowBoxCreateWidgetFunc -> FlowBoxCreateWidgetFunc_WithClosures
drop_closures_FlowBoxCreateWidgetFunc _f item _ = _f item

genClosure_FlowBoxCreateWidgetFunc :: FlowBoxCreateWidgetFunc -> IO Closure
genClosure_FlowBoxCreateWidgetFunc cb = do
    let cb' = drop_closures_FlowBoxCreateWidgetFunc cb
    let cb'' = wrap_FlowBoxCreateWidgetFunc Nothing cb'
    mk_FlowBoxCreateWidgetFunc cb'' >>= newCClosure


wrap_FlowBoxCreateWidgetFunc ::
    Maybe (Ptr (FunPtr C_FlowBoxCreateWidgetFunc)) ->
    FlowBoxCreateWidgetFunc_WithClosures ->
    Ptr () ->
    Ptr () ->
    IO (Ptr Gtk.Widget.Widget)
wrap_FlowBoxCreateWidgetFunc funptrptr _cb item userData = do
    result <- _cb  item userData
    maybeReleaseFunPtr funptrptr
    result' <- B.ManagedPtr.disownObject result
    return result'


-- callback FileFilterFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if the file should be displayed", sinceVersion = Nothing}, args = [Arg {argCName = "filter_info", argType = TInterface (Name {namespace = "Gtk", name = "FileFilterInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFileFilterInfo that is filled according\n  to the @needed flags passed to gtk_file_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_file_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of function that is used with custom filters, see\ngtk_file_filter_add_custom().", sinceVersion = Nothing}}
type C_FileFilterFunc =
    Ptr Gtk.FileFilterInfo.FileFilterInfo ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "filter_info", argType = TInterface (Name {namespace = "Gtk", name = "FileFilterInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkFileFilterInfo that is filled according\n  to the @needed flags passed to gtk_file_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_file_filter_add_custom()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_FileFilterFunc :: FunPtr C_FileFilterFunc -> C_FileFilterFunc

dynamic_FileFilterFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_FileFilterFunc
    -> Gtk.FileFilterInfo.FileFilterInfo
    {- ^ /@filterInfo@/: a 'GI.Gtk.Structs.FileFilterInfo.FileFilterInfo' that is filled according
  to the /@needed@/ flags passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom' -}
    -> Ptr ()
    {- ^ /@data@/: user data passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the file should be displayed -}
dynamic_FileFilterFunc __funPtr filterInfo data_ = liftIO $ do
    filterInfo' <- unsafeManagedPtrGetPtr filterInfo
    result <- (__dynamic_C_FileFilterFunc __funPtr) filterInfo' data_
    let result' = (/= 0) result
    touchManagedPtr filterInfo
    return result'

foreign import ccall "wrapper"
    mk_FileFilterFunc :: C_FileFilterFunc -> IO (FunPtr C_FileFilterFunc)

type FileFilterFunc =
    Gtk.FileFilterInfo.FileFilterInfo ->
    IO Bool

noFileFilterFunc :: Maybe FileFilterFunc
noFileFilterFunc = Nothing

type FileFilterFunc_WithClosures =
    Gtk.FileFilterInfo.FileFilterInfo ->
    Ptr () ->
    IO Bool

noFileFilterFunc_WithClosures :: Maybe FileFilterFunc_WithClosures
noFileFilterFunc_WithClosures = Nothing

drop_closures_FileFilterFunc :: FileFilterFunc -> FileFilterFunc_WithClosures
drop_closures_FileFilterFunc _f filterInfo _ = _f filterInfo

genClosure_FileFilterFunc :: FileFilterFunc -> IO Closure
genClosure_FileFilterFunc cb = do
    let cb' = drop_closures_FileFilterFunc cb
    let cb'' = wrap_FileFilterFunc Nothing cb'
    mk_FileFilterFunc cb'' >>= newCClosure


wrap_FileFilterFunc ::
    Maybe (Ptr (FunPtr C_FileFilterFunc)) ->
    FileFilterFunc_WithClosures ->
    Ptr Gtk.FileFilterInfo.FileFilterInfo ->
    Ptr () ->
    IO CInt
wrap_FileFilterFunc funptrptr _cb filterInfo data_ = do
    filterInfo' <- (newPtr Gtk.FileFilterInfo.FileFilterInfo) filterInfo
    result <- _cb  filterInfo' data_
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback EntryCompletionMatchFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE if @iter should be displayed as a possible completion\n    for @key", sinceVersion = Nothing}, args = [Arg {argCName = "completion", argType = TInterface (Name {namespace = "Gtk", name = "EntryCompletion"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkEntryCompletion", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the string to match, normalized and case-folded", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter indicating the row to match", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data given to gtk_entry_completion_set_match_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function which decides whether the row indicated by @iter matches\na given @key, and should be displayed as a possible completion for @key.\nNote that @key is normalized and case-folded (see g_utf8_normalize()\nand g_utf8_casefold()). If this is not appropriate, match functions\nhave access to the unmodified key via\n`gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ()))`.", sinceVersion = Nothing}}
type C_EntryCompletionMatchFunc =
    Ptr Gtk.EntryCompletion.EntryCompletion ->
    CString ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "completion", argType = TInterface (Name {namespace = "Gtk", name = "EntryCompletion"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkEntryCompletion", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the string to match, normalized and case-folded", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter indicating the row to match", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data given to gtk_entry_completion_set_match_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_EntryCompletionMatchFunc :: FunPtr C_EntryCompletionMatchFunc -> C_EntryCompletionMatchFunc

dynamic_EntryCompletionMatchFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.EntryCompletion.IsEntryCompletion a) =>
    FunPtr C_EntryCompletionMatchFunc
    -> a
    {- ^ /@completion@/: the 'GI.Gtk.Objects.EntryCompletion.EntryCompletion' -}
    -> T.Text
    {- ^ /@key@/: the string to match, normalized and case-folded -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to match -}
    -> Ptr ()
    {- ^ /@userData@/: user data given to 'GI.Gtk.Objects.EntryCompletion.entryCompletionSetMatchFunc' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@iter@/ should be displayed as a possible completion
    for /@key@/ -}
dynamic_EntryCompletionMatchFunc __funPtr completion key iter userData = liftIO $ do
    completion' <- unsafeManagedPtrCastPtr completion
    key' <- textToCString key
    iter' <- unsafeManagedPtrGetPtr iter
    result <- (__dynamic_C_EntryCompletionMatchFunc __funPtr) completion' key' iter' userData
    let result' = (/= 0) result
    touchManagedPtr completion
    touchManagedPtr iter
    freeMem key'
    return result'

foreign import ccall "wrapper"
    mk_EntryCompletionMatchFunc :: C_EntryCompletionMatchFunc -> IO (FunPtr C_EntryCompletionMatchFunc)

type EntryCompletionMatchFunc =
    Gtk.EntryCompletion.EntryCompletion ->
    T.Text ->
    Gtk.TreeIter.TreeIter ->
    IO Bool

noEntryCompletionMatchFunc :: Maybe EntryCompletionMatchFunc
noEntryCompletionMatchFunc = Nothing

type EntryCompletionMatchFunc_WithClosures =
    Gtk.EntryCompletion.EntryCompletion ->
    T.Text ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO Bool

noEntryCompletionMatchFunc_WithClosures :: Maybe EntryCompletionMatchFunc_WithClosures
noEntryCompletionMatchFunc_WithClosures = Nothing

drop_closures_EntryCompletionMatchFunc :: EntryCompletionMatchFunc -> EntryCompletionMatchFunc_WithClosures
drop_closures_EntryCompletionMatchFunc _f completion key iter _ = _f completion key iter

genClosure_EntryCompletionMatchFunc :: EntryCompletionMatchFunc -> IO Closure
genClosure_EntryCompletionMatchFunc cb = do
    let cb' = drop_closures_EntryCompletionMatchFunc cb
    let cb'' = wrap_EntryCompletionMatchFunc Nothing cb'
    mk_EntryCompletionMatchFunc cb'' >>= newCClosure


wrap_EntryCompletionMatchFunc ::
    Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc)) ->
    EntryCompletionMatchFunc_WithClosures ->
    Ptr Gtk.EntryCompletion.EntryCompletion ->
    CString ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO CInt
wrap_EntryCompletionMatchFunc funptrptr _cb completion key iter userData = do
    completion' <- (newObject Gtk.EntryCompletion.EntryCompletion) completion
    key' <- cstringToText key
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        result <- _cb  completion' key' iter' userData
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback ColorSelectionChangePaletteWithScreenFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "screen", argType = TInterface (Name {namespace = "Gdk", name = "Screen"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "colors", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Color"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Array of colors", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Just (DeprecationInfo {deprecatedSinceVersion = Just "3.4", deprecationMessage = Nothing}), callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Just "2.2"}}
type C_ColorSelectionChangePaletteWithScreenFunc =
    Ptr Gdk.Screen.Screen ->
    Ptr Gdk.Color.Color ->
    Int32 ->
    IO ()

-- Args : [Arg {argCName = "screen", argType = TInterface (Name {namespace = "Gdk", name = "Screen"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "colors", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Color"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Array of colors", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ColorSelectionChangePaletteWithScreenFunc :: FunPtr C_ColorSelectionChangePaletteWithScreenFunc -> C_ColorSelectionChangePaletteWithScreenFunc

dynamic_ColorSelectionChangePaletteWithScreenFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gdk.Screen.IsScreen a) =>
    FunPtr C_ColorSelectionChangePaletteWithScreenFunc
    -> a
    -> [Gdk.Color.Color]
    {- ^ /@colors@/: Array of colors -}
    -> m ()
dynamic_ColorSelectionChangePaletteWithScreenFunc __funPtr screen colors = liftIO $ do
    let nColors = fromIntegral $ length colors
    screen' <- unsafeManagedPtrCastPtr screen
    colors' <- mapM unsafeManagedPtrGetPtr colors
    colors'' <- packBlockArray 12 colors'
    (__dynamic_C_ColorSelectionChangePaletteWithScreenFunc __funPtr) screen' colors'' nColors
    touchManagedPtr screen
    mapM_ touchManagedPtr colors
    freeMem colors''
    return ()

foreign import ccall "wrapper"
    mk_ColorSelectionChangePaletteWithScreenFunc :: C_ColorSelectionChangePaletteWithScreenFunc -> IO (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)

{-# DEPRECATED ColorSelectionChangePaletteWithScreenFunc ["(Since version 3.4)"] #-}
type ColorSelectionChangePaletteWithScreenFunc =
    Gdk.Screen.Screen ->
    [Gdk.Color.Color] ->
    IO ()

noColorSelectionChangePaletteWithScreenFunc :: Maybe ColorSelectionChangePaletteWithScreenFunc
noColorSelectionChangePaletteWithScreenFunc = Nothing

genClosure_ColorSelectionChangePaletteWithScreenFunc :: ColorSelectionChangePaletteWithScreenFunc -> IO Closure
genClosure_ColorSelectionChangePaletteWithScreenFunc cb = do
    let cb' = wrap_ColorSelectionChangePaletteWithScreenFunc Nothing cb
    mk_ColorSelectionChangePaletteWithScreenFunc cb' >>= newCClosure


wrap_ColorSelectionChangePaletteWithScreenFunc ::
    Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)) ->
    ColorSelectionChangePaletteWithScreenFunc ->
    Ptr Gdk.Screen.Screen ->
    Ptr Gdk.Color.Color ->
    Int32 ->
    IO ()
wrap_ColorSelectionChangePaletteWithScreenFunc funptrptr _cb screen colors nColors = do
    screen' <- (newObject Gdk.Screen.Screen) screen
    colors' <- (unpackBoxedArrayWithLength 12 nColors) colors
    colors'' <- mapM (newBoxed Gdk.Color.Color) colors'
    _cb  screen' colors''
    maybeReleaseFunPtr funptrptr


-- callback ColorSelectionChangePaletteFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "colors", argType = TCArray False (-1) 1 (TInterface (Name {namespace = "Gdk", name = "Color"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Array of colors", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Just (DeprecationInfo {deprecatedSinceVersion = Just "3.4", deprecationMessage = Nothing}), callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_ColorSelectionChangePaletteFunc =
    Ptr Gdk.Color.Color ->
    Int32 ->
    IO ()

-- Args : [Arg {argCName = "colors", argType = TCArray False (-1) 1 (TInterface (Name {namespace = "Gdk", name = "Color"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Array of colors", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "n_colors", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Number of colors in the array", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ColorSelectionChangePaletteFunc :: FunPtr C_ColorSelectionChangePaletteFunc -> C_ColorSelectionChangePaletteFunc

dynamic_ColorSelectionChangePaletteFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_ColorSelectionChangePaletteFunc
    -> [Gdk.Color.Color]
    {- ^ /@colors@/: Array of colors -}
    -> m ()
dynamic_ColorSelectionChangePaletteFunc __funPtr colors = liftIO $ do
    let nColors = fromIntegral $ length colors
    colors' <- mapM unsafeManagedPtrGetPtr colors
    colors'' <- packBlockArray 12 colors'
    (__dynamic_C_ColorSelectionChangePaletteFunc __funPtr) colors'' nColors
    mapM_ touchManagedPtr colors
    freeMem colors''
    return ()

foreign import ccall "wrapper"
    mk_ColorSelectionChangePaletteFunc :: C_ColorSelectionChangePaletteFunc -> IO (FunPtr C_ColorSelectionChangePaletteFunc)

{-# DEPRECATED ColorSelectionChangePaletteFunc ["(Since version 3.4)"] #-}
type ColorSelectionChangePaletteFunc =
    [Gdk.Color.Color] ->
    IO ()

noColorSelectionChangePaletteFunc :: Maybe ColorSelectionChangePaletteFunc
noColorSelectionChangePaletteFunc = Nothing

genClosure_ColorSelectionChangePaletteFunc :: ColorSelectionChangePaletteFunc -> IO Closure
genClosure_ColorSelectionChangePaletteFunc cb = do
    let cb' = wrap_ColorSelectionChangePaletteFunc Nothing cb
    mk_ColorSelectionChangePaletteFunc cb' >>= newCClosure


wrap_ColorSelectionChangePaletteFunc ::
    Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc)) ->
    ColorSelectionChangePaletteFunc ->
    Ptr Gdk.Color.Color ->
    Int32 ->
    IO ()
wrap_ColorSelectionChangePaletteFunc funptrptr _cb colors nColors = do
    colors' <- (unpackBoxedArrayWithLength 12 nColors) colors
    colors'' <- mapM (newBoxed Gdk.Color.Color) colors'
    _cb  colors''
    maybeReleaseFunPtr funptrptr


-- callback ClipboardURIReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uris", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the received URIs", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_uris().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of\ngtk_clipboard_request_uris() are received, or when the request\nfails.", sinceVersion = Just "2.14"}}
type C_ClipboardURIReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr CString ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uris", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the received URIs", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_uris().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardURIReceivedFunc :: FunPtr C_ClipboardURIReceivedFunc -> C_ClipboardURIReceivedFunc

dynamic_ClipboardURIReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardURIReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> [T.Text]
    {- ^ /@uris@/: the received URIs -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestUris'. -}
    -> m ()
dynamic_ClipboardURIReceivedFunc __funPtr clipboard uris data_ = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    uris' <- packZeroTerminatedUTF8CArray uris
    (__dynamic_C_ClipboardURIReceivedFunc __funPtr) clipboard' uris' data_
    touchManagedPtr clipboard
    mapZeroTerminatedCArray freeMem uris'
    freeMem uris'
    return ()

foreign import ccall "wrapper"
    mk_ClipboardURIReceivedFunc :: C_ClipboardURIReceivedFunc -> IO (FunPtr C_ClipboardURIReceivedFunc)

type ClipboardURIReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    [T.Text] ->
    IO ()

noClipboardURIReceivedFunc :: Maybe ClipboardURIReceivedFunc
noClipboardURIReceivedFunc = Nothing

type ClipboardURIReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    [T.Text] ->
    Ptr () ->
    IO ()

noClipboardURIReceivedFunc_WithClosures :: Maybe ClipboardURIReceivedFunc_WithClosures
noClipboardURIReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardURIReceivedFunc :: ClipboardURIReceivedFunc -> ClipboardURIReceivedFunc_WithClosures
drop_closures_ClipboardURIReceivedFunc _f clipboard uris _ = _f clipboard uris

genClosure_ClipboardURIReceivedFunc :: ClipboardURIReceivedFunc -> IO Closure
genClosure_ClipboardURIReceivedFunc cb = do
    let cb' = drop_closures_ClipboardURIReceivedFunc cb
    let cb'' = wrap_ClipboardURIReceivedFunc Nothing cb'
    mk_ClipboardURIReceivedFunc cb'' >>= newCClosure


wrap_ClipboardURIReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc)) ->
    ClipboardURIReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr CString ->
    Ptr () ->
    IO ()
wrap_ClipboardURIReceivedFunc funptrptr _cb clipboard uris data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    uris' <- unpackZeroTerminatedUTF8CArray uris
    _cb  clipboard' uris' data_
    maybeReleaseFunPtr funptrptr


-- callback ClipboardTextReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the text received, as a UTF-8 encoded string, or\n  %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_text().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of gtk_clipboard_request_text()\nare received, or when the request fails.", sinceVersion = Nothing}}
type C_ClipboardTextReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    CString ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the text received, as a UTF-8 encoded string, or\n  %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_text().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardTextReceivedFunc :: FunPtr C_ClipboardTextReceivedFunc -> C_ClipboardTextReceivedFunc

dynamic_ClipboardTextReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardTextReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Maybe (T.Text)
    {- ^ /@text@/: the text received, as a UTF-8 encoded string, or
  'Nothing' if retrieving the data failed. -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestText'. -}
    -> m ()
dynamic_ClipboardTextReceivedFunc __funPtr clipboard text data_ = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    maybeText <- case text of
        Nothing -> return nullPtr
        Just jText -> do
            jText' <- textToCString jText
            return jText'
    (__dynamic_C_ClipboardTextReceivedFunc __funPtr) clipboard' maybeText data_
    touchManagedPtr clipboard
    freeMem maybeText
    return ()

foreign import ccall "wrapper"
    mk_ClipboardTextReceivedFunc :: C_ClipboardTextReceivedFunc -> IO (FunPtr C_ClipboardTextReceivedFunc)

type ClipboardTextReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    Maybe T.Text ->
    IO ()

noClipboardTextReceivedFunc :: Maybe ClipboardTextReceivedFunc
noClipboardTextReceivedFunc = Nothing

type ClipboardTextReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    Maybe T.Text ->
    Ptr () ->
    IO ()

noClipboardTextReceivedFunc_WithClosures :: Maybe ClipboardTextReceivedFunc_WithClosures
noClipboardTextReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardTextReceivedFunc :: ClipboardTextReceivedFunc -> ClipboardTextReceivedFunc_WithClosures
drop_closures_ClipboardTextReceivedFunc _f clipboard text _ = _f clipboard text

genClosure_ClipboardTextReceivedFunc :: ClipboardTextReceivedFunc -> IO Closure
genClosure_ClipboardTextReceivedFunc cb = do
    let cb' = drop_closures_ClipboardTextReceivedFunc cb
    let cb'' = wrap_ClipboardTextReceivedFunc Nothing cb'
    mk_ClipboardTextReceivedFunc cb'' >>= newCClosure


wrap_ClipboardTextReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc)) ->
    ClipboardTextReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    CString ->
    Ptr () ->
    IO ()
wrap_ClipboardTextReceivedFunc funptrptr _cb clipboard text data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    maybeText <-
        if text == nullPtr
        then return Nothing
        else do
            text' <- cstringToText text
            return $ Just text'
    _cb  clipboard' maybeText data_
    maybeReleaseFunPtr funptrptr


-- callback ClipboardTargetsReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "atoms", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Atom"})), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the supported targets,\n  as array of #GdkAtom, or %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_atoms", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the @atoms array.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_targets().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of gtk_clipboard_request_targets()\nare received, or when the request fails.", sinceVersion = Just "2.4"}}
type C_ClipboardTargetsReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr (Ptr Gdk.Atom.Atom) ->
    Int32 ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "atoms", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Atom"})), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the supported targets,\n  as array of #GdkAtom, or %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_atoms", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the @atoms array.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_targets().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "n_atoms", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the @atoms array.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardTargetsReceivedFunc :: FunPtr C_ClipboardTargetsReceivedFunc -> C_ClipboardTargetsReceivedFunc

dynamic_ClipboardTargetsReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardTargetsReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Maybe ([Gdk.Atom.Atom])
    {- ^ /@atoms@/: the supported targets,
  as array of 'GI.Gdk.Structs.Atom.Atom', or 'Nothing' if retrieving the data failed. -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestTargets'. -}
    -> m ()
dynamic_ClipboardTargetsReceivedFunc __funPtr clipboard atoms data_ = liftIO $ do
    let nAtoms = case atoms of
            Nothing -> 0
            Just jAtoms -> fromIntegral $ length jAtoms
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    maybeAtoms <- case atoms of
        Nothing -> return nullPtr
        Just jAtoms -> do
            jAtoms' <- mapM unsafeManagedPtrGetPtr jAtoms
            jAtoms'' <- packPtrArray jAtoms'
            return jAtoms''
    (__dynamic_C_ClipboardTargetsReceivedFunc __funPtr) clipboard' maybeAtoms nAtoms data_
    touchManagedPtr clipboard
    whenJust atoms (mapM_ touchManagedPtr)
    freeMem maybeAtoms
    return ()

foreign import ccall "wrapper"
    mk_ClipboardTargetsReceivedFunc :: C_ClipboardTargetsReceivedFunc -> IO (FunPtr C_ClipboardTargetsReceivedFunc)

type ClipboardTargetsReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    Maybe [Gdk.Atom.Atom] ->
    IO ()

noClipboardTargetsReceivedFunc :: Maybe ClipboardTargetsReceivedFunc
noClipboardTargetsReceivedFunc = Nothing

type ClipboardTargetsReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    Maybe [Gdk.Atom.Atom] ->
    Ptr () ->
    IO ()

noClipboardTargetsReceivedFunc_WithClosures :: Maybe ClipboardTargetsReceivedFunc_WithClosures
noClipboardTargetsReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardTargetsReceivedFunc :: ClipboardTargetsReceivedFunc -> ClipboardTargetsReceivedFunc_WithClosures
drop_closures_ClipboardTargetsReceivedFunc _f clipboard atoms _ = _f clipboard atoms

genClosure_ClipboardTargetsReceivedFunc :: ClipboardTargetsReceivedFunc -> IO Closure
genClosure_ClipboardTargetsReceivedFunc cb = do
    let cb' = drop_closures_ClipboardTargetsReceivedFunc cb
    let cb'' = wrap_ClipboardTargetsReceivedFunc Nothing cb'
    mk_ClipboardTargetsReceivedFunc cb'' >>= newCClosure


wrap_ClipboardTargetsReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc)) ->
    ClipboardTargetsReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr (Ptr Gdk.Atom.Atom) ->
    Int32 ->
    Ptr () ->
    IO ()
wrap_ClipboardTargetsReceivedFunc funptrptr _cb clipboard atoms nAtoms data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    maybeAtoms <-
        if atoms == nullPtr
        then return Nothing
        else do
            atoms' <- (unpackPtrArrayWithLength nAtoms) atoms
            atoms'' <- mapM (newPtr Gdk.Atom.Atom) atoms'
            return $ Just atoms''
    _cb  clipboard' maybeAtoms data_
    maybeReleaseFunPtr funptrptr


-- callback ClipboardRichTextReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gdk", name = "Atom"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The format of the rich text", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the rich text received, as\n  a UTF-8 encoded string, or %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Length of the text.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_rich_text().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of\ngtk_clipboard_request_rich_text() are received, or when the request\nfails.", sinceVersion = Just "2.10"}}
type C_ClipboardRichTextReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gdk.Atom.Atom ->
    CString ->
    Word64 ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gdk", name = "Atom"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The format of the rich text", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the rich text received, as\n  a UTF-8 encoded string, or %NULL if retrieving the data failed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Length of the text.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_rich_text().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardRichTextReceivedFunc :: FunPtr C_ClipboardRichTextReceivedFunc -> C_ClipboardRichTextReceivedFunc

dynamic_ClipboardRichTextReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardRichTextReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Gdk.Atom.Atom
    {- ^ /@format@/: The format of the rich text -}
    -> Maybe (T.Text)
    {- ^ /@text@/: the rich text received, as
  a UTF-8 encoded string, or 'Nothing' if retrieving the data failed. -}
    -> Word64
    {- ^ /@length@/: Length of the text. -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestRichText'. -}
    -> m ()
dynamic_ClipboardRichTextReceivedFunc __funPtr clipboard format text length_ data_ = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    format' <- unsafeManagedPtrGetPtr format
    maybeText <- case text of
        Nothing -> return nullPtr
        Just jText -> do
            jText' <- textToCString jText
            return jText'
    (__dynamic_C_ClipboardRichTextReceivedFunc __funPtr) clipboard' format' maybeText length_ data_
    touchManagedPtr clipboard
    touchManagedPtr format
    freeMem maybeText
    return ()

foreign import ccall "wrapper"
    mk_ClipboardRichTextReceivedFunc :: C_ClipboardRichTextReceivedFunc -> IO (FunPtr C_ClipboardRichTextReceivedFunc)

type ClipboardRichTextReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    Gdk.Atom.Atom ->
    Maybe T.Text ->
    Word64 ->
    IO ()

noClipboardRichTextReceivedFunc :: Maybe ClipboardRichTextReceivedFunc
noClipboardRichTextReceivedFunc = Nothing

type ClipboardRichTextReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    Gdk.Atom.Atom ->
    Maybe T.Text ->
    Word64 ->
    Ptr () ->
    IO ()

noClipboardRichTextReceivedFunc_WithClosures :: Maybe ClipboardRichTextReceivedFunc_WithClosures
noClipboardRichTextReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardRichTextReceivedFunc :: ClipboardRichTextReceivedFunc -> ClipboardRichTextReceivedFunc_WithClosures
drop_closures_ClipboardRichTextReceivedFunc _f clipboard format text length_ _ = _f clipboard format text length_

genClosure_ClipboardRichTextReceivedFunc :: ClipboardRichTextReceivedFunc -> IO Closure
genClosure_ClipboardRichTextReceivedFunc cb = do
    let cb' = drop_closures_ClipboardRichTextReceivedFunc cb
    let cb'' = wrap_ClipboardRichTextReceivedFunc Nothing cb'
    mk_ClipboardRichTextReceivedFunc cb'' >>= newCClosure


wrap_ClipboardRichTextReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc)) ->
    ClipboardRichTextReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gdk.Atom.Atom ->
    CString ->
    Word64 ->
    Ptr () ->
    IO ()
wrap_ClipboardRichTextReceivedFunc funptrptr _cb clipboard format text length_ data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    format' <- (newPtr Gdk.Atom.Atom) format
    maybeText <-
        if text == nullPtr
        then return Nothing
        else do
            text' <- cstringToText text
            return $ Just text'
    _cb  clipboard' format' maybeText length_ data_
    maybeReleaseFunPtr funptrptr


-- callback ClipboardReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSelectionData containing the data was received.\n  If retrieving the data failed, then then length field\n  of @selection_data will be negative.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_contents().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of gtk_clipboard_request_contents()\nare received, or when the request fails.", sinceVersion = Nothing}}
type C_ClipboardReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gtk.SelectionData.SelectionData ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSelectionData containing the data was received.\n  If retrieving the data failed, then then length field\n  of @selection_data will be negative.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_contents().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardReceivedFunc :: FunPtr C_ClipboardReceivedFunc -> C_ClipboardReceivedFunc

dynamic_ClipboardReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Gtk.SelectionData.SelectionData
    {- ^ /@selectionData@/: a 'GI.Gtk.Structs.SelectionData.SelectionData' containing the data was received.
  If retrieving the data failed, then then length field
  of /@selectionData@/ will be negative. -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestContents'. -}
    -> m ()
dynamic_ClipboardReceivedFunc __funPtr clipboard selectionData data_ = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    selectionData' <- unsafeManagedPtrGetPtr selectionData
    (__dynamic_C_ClipboardReceivedFunc __funPtr) clipboard' selectionData' data_
    touchManagedPtr clipboard
    touchManagedPtr selectionData
    return ()

foreign import ccall "wrapper"
    mk_ClipboardReceivedFunc :: C_ClipboardReceivedFunc -> IO (FunPtr C_ClipboardReceivedFunc)

type ClipboardReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    Gtk.SelectionData.SelectionData ->
    IO ()

noClipboardReceivedFunc :: Maybe ClipboardReceivedFunc
noClipboardReceivedFunc = Nothing

type ClipboardReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    Gtk.SelectionData.SelectionData ->
    Ptr () ->
    IO ()

noClipboardReceivedFunc_WithClosures :: Maybe ClipboardReceivedFunc_WithClosures
noClipboardReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardReceivedFunc :: ClipboardReceivedFunc -> ClipboardReceivedFunc_WithClosures
drop_closures_ClipboardReceivedFunc _f clipboard selectionData _ = _f clipboard selectionData

genClosure_ClipboardReceivedFunc :: ClipboardReceivedFunc -> IO Closure
genClosure_ClipboardReceivedFunc cb = do
    let cb' = drop_closures_ClipboardReceivedFunc cb
    let cb'' = wrap_ClipboardReceivedFunc Nothing cb'
    mk_ClipboardReceivedFunc cb'' >>= newCClosure


wrap_ClipboardReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardReceivedFunc)) ->
    ClipboardReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gtk.SelectionData.SelectionData ->
    Ptr () ->
    IO ()
wrap_ClipboardReceivedFunc funptrptr _cb clipboard selectionData data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    B.ManagedPtr.withTransient Gtk.SelectionData.SelectionData selectionData $ \selectionData' -> do
        _cb  clipboard' selectionData' data_
        maybeReleaseFunPtr funptrptr


-- callback ClipboardImageReceivedFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the received image", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_image().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function to be called when the results of gtk_clipboard_request_image()\nare received, or when the request fails.", sinceVersion = Just "2.6"}}
type C_ClipboardImageReceivedFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr GdkPixbuf.Pixbuf.Pixbuf ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the received image", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data supplied to\n  gtk_clipboard_request_image().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardImageReceivedFunc :: FunPtr C_ClipboardImageReceivedFunc -> C_ClipboardImageReceivedFunc

dynamic_ClipboardImageReceivedFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a, GdkPixbuf.Pixbuf.IsPixbuf b) =>
    FunPtr C_ClipboardImageReceivedFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> b
    {- ^ /@pixbuf@/: the received image -}
    -> Ptr ()
    {- ^ /@data@/: the /@userData@/ supplied to
  'GI.Gtk.Objects.Clipboard.clipboardRequestImage'. -}
    -> m ()
dynamic_ClipboardImageReceivedFunc __funPtr clipboard pixbuf data_ = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    pixbuf' <- unsafeManagedPtrCastPtr pixbuf
    (__dynamic_C_ClipboardImageReceivedFunc __funPtr) clipboard' pixbuf' data_
    touchManagedPtr clipboard
    touchManagedPtr pixbuf
    return ()

foreign import ccall "wrapper"
    mk_ClipboardImageReceivedFunc :: C_ClipboardImageReceivedFunc -> IO (FunPtr C_ClipboardImageReceivedFunc)

type ClipboardImageReceivedFunc =
    Gtk.Clipboard.Clipboard ->
    GdkPixbuf.Pixbuf.Pixbuf ->
    IO ()

noClipboardImageReceivedFunc :: Maybe ClipboardImageReceivedFunc
noClipboardImageReceivedFunc = Nothing

type ClipboardImageReceivedFunc_WithClosures =
    Gtk.Clipboard.Clipboard ->
    GdkPixbuf.Pixbuf.Pixbuf ->
    Ptr () ->
    IO ()

noClipboardImageReceivedFunc_WithClosures :: Maybe ClipboardImageReceivedFunc_WithClosures
noClipboardImageReceivedFunc_WithClosures = Nothing

drop_closures_ClipboardImageReceivedFunc :: ClipboardImageReceivedFunc -> ClipboardImageReceivedFunc_WithClosures
drop_closures_ClipboardImageReceivedFunc _f clipboard pixbuf _ = _f clipboard pixbuf

genClosure_ClipboardImageReceivedFunc :: ClipboardImageReceivedFunc -> IO Closure
genClosure_ClipboardImageReceivedFunc cb = do
    let cb' = drop_closures_ClipboardImageReceivedFunc cb
    let cb'' = wrap_ClipboardImageReceivedFunc Nothing cb'
    mk_ClipboardImageReceivedFunc cb'' >>= newCClosure


wrap_ClipboardImageReceivedFunc ::
    Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc)) ->
    ClipboardImageReceivedFunc_WithClosures ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr GdkPixbuf.Pixbuf.Pixbuf ->
    Ptr () ->
    IO ()
wrap_ClipboardImageReceivedFunc funptrptr _cb clipboard pixbuf data_ = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    pixbuf' <- (newObject GdkPixbuf.Pixbuf.Pixbuf) pixbuf
    _cb  clipboard' pixbuf' data_
    maybeReleaseFunPtr funptrptr


-- callback ClipboardGetFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSelectionData argument in which the requested\n  data should be stored.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the info field corresponding to the requested target from the\n  #GtkTargetEntry array passed to gtk_clipboard_set_with_data() or\n  gtk_clipboard_set_with_owner().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data_or_owner", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data argument passed to\n  gtk_clipboard_set_with_data(), or the @owner argument passed to\n  gtk_clipboard_set_with_owner()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function that will be called to provide the contents of the selection.\nIf multiple types of data were advertised, the requested type can\nbe determined from the @info parameter or by checking the target field\nof @selection_data. If the data could successfully be converted into\nthen it should be stored into the @selection_data object by\ncalling gtk_selection_data_set() (or related functions such\nas gtk_selection_data_set_text()). If no data is set, the requestor\nwill be informed that the attempt to get the data failed.", sinceVersion = Nothing}}
type C_ClipboardGetFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gtk.SelectionData.SelectionData ->
    Word32 ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSelectionData argument in which the requested\n  data should be stored.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the info field corresponding to the requested target from the\n  #GtkTargetEntry array passed to gtk_clipboard_set_with_data() or\n  gtk_clipboard_set_with_owner().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data_or_owner", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data argument passed to\n  gtk_clipboard_set_with_data(), or the @owner argument passed to\n  gtk_clipboard_set_with_owner()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardGetFunc :: FunPtr C_ClipboardGetFunc -> C_ClipboardGetFunc

dynamic_ClipboardGetFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardGetFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Gtk.SelectionData.SelectionData
    {- ^ /@selectionData@/: a 'GI.Gtk.Structs.SelectionData.SelectionData' argument in which the requested
  data should be stored. -}
    -> Word32
    {- ^ /@info@/: the info field corresponding to the requested target from the
  'GI.Gtk.Structs.TargetEntry.TargetEntry' array passed to @/gtk_clipboard_set_with_data()/@ or
  @/gtk_clipboard_set_with_owner()/@. -}
    -> Ptr ()
    {- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to
  @/gtk_clipboard_set_with_data()/@, or the /@owner@/ argument passed to
  @/gtk_clipboard_set_with_owner()/@ -}
    -> m ()
dynamic_ClipboardGetFunc __funPtr clipboard selectionData info userDataOrOwner = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    selectionData' <- unsafeManagedPtrGetPtr selectionData
    (__dynamic_C_ClipboardGetFunc __funPtr) clipboard' selectionData' info userDataOrOwner
    touchManagedPtr clipboard
    touchManagedPtr selectionData
    return ()

foreign import ccall "wrapper"
    mk_ClipboardGetFunc :: C_ClipboardGetFunc -> IO (FunPtr C_ClipboardGetFunc)

type ClipboardGetFunc =
    Gtk.Clipboard.Clipboard ->
    Gtk.SelectionData.SelectionData ->
    Word32 ->
    Ptr () ->
    IO ()

noClipboardGetFunc :: Maybe ClipboardGetFunc
noClipboardGetFunc = Nothing

genClosure_ClipboardGetFunc :: ClipboardGetFunc -> IO Closure
genClosure_ClipboardGetFunc cb = do
    let cb' = wrap_ClipboardGetFunc Nothing cb
    mk_ClipboardGetFunc cb' >>= newCClosure


wrap_ClipboardGetFunc ::
    Maybe (Ptr (FunPtr C_ClipboardGetFunc)) ->
    ClipboardGetFunc ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr Gtk.SelectionData.SelectionData ->
    Word32 ->
    Ptr () ->
    IO ()
wrap_ClipboardGetFunc funptrptr _cb clipboard selectionData info userDataOrOwner = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    B.ManagedPtr.withTransient Gtk.SelectionData.SelectionData selectionData $ \selectionData' -> do
        _cb  clipboard' selectionData' info userDataOrOwner
        maybeReleaseFunPtr funptrptr


-- callback ClipboardClearFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data_or_owner", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data argument passed to gtk_clipboard_set_with_data(),\n  or the @owner argument passed to gtk_clipboard_set_with_owner()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function that will be called when the contents of the clipboard are changed\nor cleared. Once this has called, the @user_data_or_owner argument\nwill not be used again.", sinceVersion = Nothing}}
type C_ClipboardClearFunc =
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "clipboard", argType = TInterface (Name {namespace = "Gtk", name = "Clipboard"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GtkClipboard", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data_or_owner", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the @user_data argument passed to gtk_clipboard_set_with_data(),\n  or the @owner argument passed to gtk_clipboard_set_with_owner()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_ClipboardClearFunc :: FunPtr C_ClipboardClearFunc -> C_ClipboardClearFunc

dynamic_ClipboardClearFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
    FunPtr C_ClipboardClearFunc
    -> a
    {- ^ /@clipboard@/: the 'GI.Gtk.Objects.Clipboard.Clipboard' -}
    -> Ptr ()
    {- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to @/gtk_clipboard_set_with_data()/@,
  or the /@owner@/ argument passed to @/gtk_clipboard_set_with_owner()/@ -}
    -> m ()
dynamic_ClipboardClearFunc __funPtr clipboard userDataOrOwner = liftIO $ do
    clipboard' <- unsafeManagedPtrCastPtr clipboard
    (__dynamic_C_ClipboardClearFunc __funPtr) clipboard' userDataOrOwner
    touchManagedPtr clipboard
    return ()

foreign import ccall "wrapper"
    mk_ClipboardClearFunc :: C_ClipboardClearFunc -> IO (FunPtr C_ClipboardClearFunc)

type ClipboardClearFunc =
    Gtk.Clipboard.Clipboard ->
    Ptr () ->
    IO ()

noClipboardClearFunc :: Maybe ClipboardClearFunc
noClipboardClearFunc = Nothing

genClosure_ClipboardClearFunc :: ClipboardClearFunc -> IO Closure
genClosure_ClipboardClearFunc cb = do
    let cb' = wrap_ClipboardClearFunc Nothing cb
    mk_ClipboardClearFunc cb' >>= newCClosure


wrap_ClipboardClearFunc ::
    Maybe (Ptr (FunPtr C_ClipboardClearFunc)) ->
    ClipboardClearFunc ->
    Ptr Gtk.Clipboard.Clipboard ->
    Ptr () ->
    IO ()
wrap_ClipboardClearFunc funptrptr _cb clipboard userDataOrOwner = do
    clipboard' <- (newObject Gtk.Clipboard.Clipboard) clipboard
    _cb  clipboard' userDataOrOwner
    maybeReleaseFunPtr funptrptr


-- callback CellLayoutDataFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "cell_layout", argType = TInterface (Name {namespace = "Gtk", name = "CellLayout"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkCellLayout", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer whose value is to be set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tree_model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter indicating the row to set the value for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_cell_layout_set_cell_data_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function which should set the value of @cell_layout\8217s cell renderer(s)\nas appropriate.", sinceVersion = Nothing}}
type C_CellLayoutDataFunc =
    Ptr Gtk.CellLayout.CellLayout ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "cell_layout", argType = TInterface (Name {namespace = "Gtk", name = "CellLayout"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkCellLayout", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer whose value is to be set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tree_model", argType = TInterface (Name {namespace = "Gtk", name = "TreeModel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the model", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TreeIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeIter indicating the row to set the value for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to gtk_cell_layout_set_cell_data_func()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CellLayoutDataFunc :: FunPtr C_CellLayoutDataFunc -> C_CellLayoutDataFunc

dynamic_CellLayoutDataFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.CellLayout.IsCellLayout a, Gtk.CellRenderer.IsCellRenderer b, Gtk.TreeModel.IsTreeModel c) =>
    FunPtr C_CellLayoutDataFunc
    -> a
    {- ^ /@cellLayout@/: a 'GI.Gtk.Interfaces.CellLayout.CellLayout' -}
    -> b
    {- ^ /@cell@/: the cell renderer whose value is to be set -}
    -> c
    {- ^ /@treeModel@/: the model -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to set the value for -}
    -> Ptr ()
    {- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.CellLayout.cellLayoutSetCellDataFunc' -}
    -> m ()
dynamic_CellLayoutDataFunc __funPtr cellLayout cell treeModel iter data_ = liftIO $ do
    cellLayout' <- unsafeManagedPtrCastPtr cellLayout
    cell' <- unsafeManagedPtrCastPtr cell
    treeModel' <- unsafeManagedPtrCastPtr treeModel
    iter' <- unsafeManagedPtrGetPtr iter
    (__dynamic_C_CellLayoutDataFunc __funPtr) cellLayout' cell' treeModel' iter' data_
    touchManagedPtr cellLayout
    touchManagedPtr cell
    touchManagedPtr treeModel
    touchManagedPtr iter
    return ()

foreign import ccall "wrapper"
    mk_CellLayoutDataFunc :: C_CellLayoutDataFunc -> IO (FunPtr C_CellLayoutDataFunc)

type CellLayoutDataFunc =
    Gtk.CellLayout.CellLayout ->
    Gtk.CellRenderer.CellRenderer ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    IO ()

noCellLayoutDataFunc :: Maybe CellLayoutDataFunc
noCellLayoutDataFunc = Nothing

type CellLayoutDataFunc_WithClosures =
    Gtk.CellLayout.CellLayout ->
    Gtk.CellRenderer.CellRenderer ->
    Gtk.TreeModel.TreeModel ->
    Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()

noCellLayoutDataFunc_WithClosures :: Maybe CellLayoutDataFunc_WithClosures
noCellLayoutDataFunc_WithClosures = Nothing

drop_closures_CellLayoutDataFunc :: CellLayoutDataFunc -> CellLayoutDataFunc_WithClosures
drop_closures_CellLayoutDataFunc _f cellLayout cell treeModel iter _ = _f cellLayout cell treeModel iter

genClosure_CellLayoutDataFunc :: CellLayoutDataFunc -> IO Closure
genClosure_CellLayoutDataFunc cb = do
    let cb' = drop_closures_CellLayoutDataFunc cb
    let cb'' = wrap_CellLayoutDataFunc Nothing cb'
    mk_CellLayoutDataFunc cb'' >>= newCClosure


wrap_CellLayoutDataFunc ::
    Maybe (Ptr (FunPtr C_CellLayoutDataFunc)) ->
    CellLayoutDataFunc_WithClosures ->
    Ptr Gtk.CellLayout.CellLayout ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gtk.TreeModel.TreeModel ->
    Ptr Gtk.TreeIter.TreeIter ->
    Ptr () ->
    IO ()
wrap_CellLayoutDataFunc funptrptr _cb cellLayout cell treeModel iter data_ = do
    cellLayout' <- (newObject Gtk.CellLayout.CellLayout) cellLayout
    cell' <- (newObject Gtk.CellRenderer.CellRenderer) cell
    treeModel' <- (newObject Gtk.TreeModel.TreeModel) treeModel
    B.ManagedPtr.withTransient Gtk.TreeIter.TreeIter iter $ \iter' -> do
        _cb  cellLayout' cell' treeModel' iter' data_
        maybeReleaseFunPtr funptrptr


-- callback CellCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE to stop iterating over cells.", sinceVersion = Nothing}, args = [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of the callback functions used for iterating over\nthe cell renderers of a #GtkCellArea, see gtk_cell_area_foreach().", sinceVersion = Nothing}}
type C_CellCallback =
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CellCallback :: FunPtr C_CellCallback -> C_CellCallback

dynamic_CellCallback ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.CellRenderer.IsCellRenderer a) =>
    FunPtr C_CellCallback
    -> a
    {- ^ /@renderer@/: the cell renderer to operate on -}
    -> Ptr ()
    {- ^ /@data@/: user-supplied data -}
    -> m Bool
    {- ^ __Returns:__ 'True' to stop iterating over cells. -}
dynamic_CellCallback __funPtr renderer data_ = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- (__dynamic_C_CellCallback __funPtr) renderer' data_
    let result' = (/= 0) result
    touchManagedPtr renderer
    return result'

foreign import ccall "wrapper"
    mk_CellCallback :: C_CellCallback -> IO (FunPtr C_CellCallback)

type CellCallback =
    Gtk.CellRenderer.CellRenderer ->
    IO Bool

noCellCallback :: Maybe CellCallback
noCellCallback = Nothing

type CellCallback_WithClosures =
    Gtk.CellRenderer.CellRenderer ->
    Ptr () ->
    IO Bool

noCellCallback_WithClosures :: Maybe CellCallback_WithClosures
noCellCallback_WithClosures = Nothing

drop_closures_CellCallback :: CellCallback -> CellCallback_WithClosures
drop_closures_CellCallback _f renderer _ = _f renderer

genClosure_CellCallback :: CellCallback -> IO Closure
genClosure_CellCallback cb = do
    let cb' = drop_closures_CellCallback cb
    let cb'' = wrap_CellCallback Nothing cb'
    mk_CellCallback cb'' >>= newCClosure


wrap_CellCallback ::
    Maybe (Ptr (FunPtr C_CellCallback)) ->
    CellCallback_WithClosures ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr () ->
    IO CInt
wrap_CellCallback funptrptr _cb renderer data_ = do
    renderer' <- (newObject Gtk.CellRenderer.CellRenderer) renderer
    result <- _cb  renderer' data_
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback CellAllocCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "%TRUE to stop iterating over cells.", sinceVersion = Nothing}, args = [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the area allocated to @renderer inside the rectangle\n    provided to gtk_cell_area_foreach_alloc().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_background", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the background area for @renderer inside the\n    background area provided to gtk_cell_area_foreach_alloc().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of the callback functions used for iterating over the\ncell renderers and their allocated areas inside a #GtkCellArea,\nsee gtk_cell_area_foreach_alloc().", sinceVersion = Nothing}}
type C_CellAllocCallback =
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "Gtk", name = "CellRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cell renderer to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the area allocated to @renderer inside the rectangle\n    provided to gtk_cell_area_foreach_alloc().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_background", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the background area for @renderer inside the\n    background area provided to gtk_cell_area_foreach_alloc().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CellAllocCallback :: FunPtr C_CellAllocCallback -> C_CellAllocCallback

dynamic_CellAllocCallback ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.CellRenderer.IsCellRenderer a) =>
    FunPtr C_CellAllocCallback
    -> a
    {- ^ /@renderer@/: the cell renderer to operate on -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@cellArea@/: the area allocated to /@renderer@/ inside the rectangle
    provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'. -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@cellBackground@/: the background area for /@renderer@/ inside the
    background area provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'. -}
    -> Ptr ()
    {- ^ /@data@/: user-supplied data -}
    -> m Bool
    {- ^ __Returns:__ 'True' to stop iterating over cells. -}
dynamic_CellAllocCallback __funPtr renderer cellArea cellBackground data_ = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    cellArea' <- unsafeManagedPtrGetPtr cellArea
    cellBackground' <- unsafeManagedPtrGetPtr cellBackground
    result <- (__dynamic_C_CellAllocCallback __funPtr) renderer' cellArea' cellBackground' data_
    let result' = (/= 0) result
    touchManagedPtr renderer
    touchManagedPtr cellArea
    touchManagedPtr cellBackground
    return result'

foreign import ccall "wrapper"
    mk_CellAllocCallback :: C_CellAllocCallback -> IO (FunPtr C_CellAllocCallback)

type CellAllocCallback =
    Gtk.CellRenderer.CellRenderer ->
    Gdk.Rectangle.Rectangle ->
    Gdk.Rectangle.Rectangle ->
    IO Bool

noCellAllocCallback :: Maybe CellAllocCallback
noCellAllocCallback = Nothing

type CellAllocCallback_WithClosures =
    Gtk.CellRenderer.CellRenderer ->
    Gdk.Rectangle.Rectangle ->
    Gdk.Rectangle.Rectangle ->
    Ptr () ->
    IO Bool

noCellAllocCallback_WithClosures :: Maybe CellAllocCallback_WithClosures
noCellAllocCallback_WithClosures = Nothing

drop_closures_CellAllocCallback :: CellAllocCallback -> CellAllocCallback_WithClosures
drop_closures_CellAllocCallback _f renderer cellArea cellBackground _ = _f renderer cellArea cellBackground

genClosure_CellAllocCallback :: CellAllocCallback -> IO Closure
genClosure_CellAllocCallback cb = do
    let cb' = drop_closures_CellAllocCallback cb
    let cb'' = wrap_CellAllocCallback Nothing cb'
    mk_CellAllocCallback cb'' >>= newCClosure


wrap_CellAllocCallback ::
    Maybe (Ptr (FunPtr C_CellAllocCallback)) ->
    CellAllocCallback_WithClosures ->
    Ptr Gtk.CellRenderer.CellRenderer ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr () ->
    IO CInt
wrap_CellAllocCallback funptrptr _cb renderer cellArea cellBackground data_ = do
    renderer' <- (newObject Gtk.CellRenderer.CellRenderer) renderer
    B.ManagedPtr.withTransient Gdk.Rectangle.Rectangle cellArea $ \cellArea' -> do
        B.ManagedPtr.withTransient Gdk.Rectangle.Rectangle cellBackground $ \cellBackground' -> do
            result <- _cb  renderer' cellArea' cellBackground' data_
            maybeReleaseFunPtr funptrptr
            let result' = (fromIntegral . fromEnum) result
            return result'


-- callback Callback
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "The type of the callback functions used for e.g. iterating over\nthe children of a container, see gtk_container_foreach().", sinceVersion = Nothing}}
type C_Callback =
    Ptr Gtk.Widget.Widget ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "widget", argType = TInterface (Name {namespace = "Gtk", name = "Widget"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget to operate on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user-supplied data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_Callback :: FunPtr C_Callback -> C_Callback

dynamic_Callback ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
    FunPtr C_Callback
    -> a
    {- ^ /@widget@/: the widget to operate on -}
    -> Ptr ()
    {- ^ /@data@/: user-supplied data -}
    -> m ()
dynamic_Callback __funPtr widget data_ = liftIO $ do
    widget' <- unsafeManagedPtrCastPtr widget
    (__dynamic_C_Callback __funPtr) widget' data_
    touchManagedPtr widget
    return ()

foreign import ccall "wrapper"
    mk_Callback :: C_Callback -> IO (FunPtr C_Callback)

type Callback =
    Gtk.Widget.Widget ->
    IO ()

noCallback :: Maybe Callback
noCallback = Nothing

type Callback_WithClosures =
    Gtk.Widget.Widget ->
    Ptr () ->
    IO ()

noCallback_WithClosures :: Maybe Callback_WithClosures
noCallback_WithClosures = Nothing

drop_closures_Callback :: Callback -> Callback_WithClosures
drop_closures_Callback _f widget _ = _f widget

genClosure_Callback :: Callback -> IO Closure
genClosure_Callback cb = do
    let cb' = drop_closures_Callback cb
    let cb'' = wrap_Callback Nothing cb'
    mk_Callback cb'' >>= newCClosure


wrap_Callback ::
    Maybe (Ptr (FunPtr C_Callback)) ->
    Callback_WithClosures ->
    Ptr Gtk.Widget.Widget ->
    Ptr () ->
    IO ()
wrap_Callback funptrptr _cb widget data_ = do
    widget' <- (newObject Gtk.Widget.Widget) widget
    _cb  widget' data_
    maybeReleaseFunPtr funptrptr


-- callback CalendarDetailFunc
--          -> Callable {returnType = Just (TBasicType TUTF8), returnMayBeNull = True, returnTransfer = TransferEverything, returnDocumentation = Documentation {rawDocText = Just "Newly allocated string with Pango markup\n    with details for the specified day or %NULL.", sinceVersion = Nothing}, args = [Arg {argCName = "calendar", argType = TInterface (Name {namespace = "Gtk", name = "Calendar"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkCalendar.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "year", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the year for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "month", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the month for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "day", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the day of @month for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data passed with gtk_calendar_set_detail_func().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "This kind of functions provide Pango markup with detail information for the\nspecified day. Examples for such details are holidays or appointments. The\nfunction returns %NULL when no information is available.", sinceVersion = Just "2.14"}}
type C_CalendarDetailFunc =
    Ptr Gtk.Calendar.Calendar ->
    Word32 ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO CString

-- Args : [Arg {argCName = "calendar", argType = TInterface (Name {namespace = "Gtk", name = "Calendar"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkCalendar.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "year", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the year for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "month", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the month for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "day", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the day of @month for which details are needed.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data passed with gtk_calendar_set_detail_func().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CalendarDetailFunc :: FunPtr C_CalendarDetailFunc -> C_CalendarDetailFunc

dynamic_CalendarDetailFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Calendar.IsCalendar a) =>
    FunPtr C_CalendarDetailFunc
    -> a
    {- ^ /@calendar@/: a 'GI.Gtk.Objects.Calendar.Calendar'. -}
    -> Word32
    {- ^ /@year@/: the year for which details are needed. -}
    -> Word32
    {- ^ /@month@/: the month for which details are needed. -}
    -> Word32
    {- ^ /@day@/: the day of /@month@/ for which details are needed. -}
    -> Ptr ()
    {- ^ /@userData@/: the data passed with 'GI.Gtk.Objects.Calendar.calendarSetDetailFunc'. -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ Newly allocated string with Pango markup
    with details for the specified day or 'Nothing'. -}
dynamic_CalendarDetailFunc __funPtr calendar year month day userData = liftIO $ do
    calendar' <- unsafeManagedPtrCastPtr calendar
    result <- (__dynamic_C_CalendarDetailFunc __funPtr) calendar' year month day userData
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        freeMem result'
        return result''
    touchManagedPtr calendar
    return maybeResult

foreign import ccall "wrapper"
    mk_CalendarDetailFunc :: C_CalendarDetailFunc -> IO (FunPtr C_CalendarDetailFunc)

type CalendarDetailFunc =
    Gtk.Calendar.Calendar ->
    Word32 ->
    Word32 ->
    Word32 ->
    IO (Maybe T.Text)

noCalendarDetailFunc :: Maybe CalendarDetailFunc
noCalendarDetailFunc = Nothing

type CalendarDetailFunc_WithClosures =
    Gtk.Calendar.Calendar ->
    Word32 ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO (Maybe T.Text)

noCalendarDetailFunc_WithClosures :: Maybe CalendarDetailFunc_WithClosures
noCalendarDetailFunc_WithClosures = Nothing

drop_closures_CalendarDetailFunc :: CalendarDetailFunc -> CalendarDetailFunc_WithClosures
drop_closures_CalendarDetailFunc _f calendar year month day _ = _f calendar year month day

genClosure_CalendarDetailFunc :: CalendarDetailFunc -> IO Closure
genClosure_CalendarDetailFunc cb = do
    let cb' = drop_closures_CalendarDetailFunc cb
    let cb'' = wrap_CalendarDetailFunc Nothing cb'
    mk_CalendarDetailFunc cb'' >>= newCClosure


wrap_CalendarDetailFunc ::
    Maybe (Ptr (FunPtr C_CalendarDetailFunc)) ->
    CalendarDetailFunc_WithClosures ->
    Ptr Gtk.Calendar.Calendar ->
    Word32 ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO CString
wrap_CalendarDetailFunc funptrptr _cb calendar year month day userData = do
    calendar' <- (newObject Gtk.Calendar.Calendar) calendar
    result <- _cb  calendar' year month day userData
    maybeReleaseFunPtr funptrptr
    maybeM nullPtr result $ \result' -> do
        result'' <- textToCString result'
        return result''


-- callback BuilderConnectFunc
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "builder", argType = TInterface (Name {namespace = "Gtk", name = "Builder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkBuilder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "object to connect a signal to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "signal_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of the signal", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "handler_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of the handler", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "connect_object", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GObject, if non-%NULL, use g_signal_connect_object()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "GObject", name = "ConnectFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GConnectFlags to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 6, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "This is the signature of a function used to connect signals.  It is used\nby the gtk_builder_connect_signals() and gtk_builder_connect_signals_full()\nmethods.  It is mainly intended for interpreted language bindings, but\ncould be useful where the programmer wants more control over the signal\nconnection process. Note that this function can only be called once,\nsubsequent calls will do nothing.", sinceVersion = Just "2.12"}}
type C_BuilderConnectFunc =
    Ptr Gtk.Builder.Builder ->
    Ptr GObject.Object.Object ->
    CString ->
    CString ->
    Ptr GObject.Object.Object ->
    CUInt ->
    Ptr () ->
    IO ()

-- Args : [Arg {argCName = "builder", argType = TInterface (Name {namespace = "Gtk", name = "Builder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkBuilder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "object to connect a signal to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "signal_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of the signal", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "handler_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of the handler", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "connect_object", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GObject, if non-%NULL, use g_signal_connect_object()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "GObject", name = "ConnectFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GConnectFlags to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 6, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_BuilderConnectFunc :: FunPtr C_BuilderConnectFunc -> C_BuilderConnectFunc

dynamic_BuilderConnectFunc ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Builder.IsBuilder a, GObject.Object.IsObject b, GObject.Object.IsObject c) =>
    FunPtr C_BuilderConnectFunc
    -> a
    {- ^ /@builder@/: a 'GI.Gtk.Objects.Builder.Builder' -}
    -> b
    {- ^ /@object@/: object to connect a signal to -}
    -> T.Text
    {- ^ /@signalName@/: name of the signal -}
    -> T.Text
    {- ^ /@handlerName@/: name of the handler -}
    -> Maybe (c)
    {- ^ /@connectObject@/: a 'GI.GObject.Objects.Object.Object', if non-'Nothing', use @/g_signal_connect_object()/@ -}
    -> [GObject.Flags.ConnectFlags]
    {- ^ /@flags@/: 'GI.GObject.Flags.ConnectFlags' to use -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> m ()
dynamic_BuilderConnectFunc __funPtr builder object signalName handlerName connectObject flags userData = liftIO $ do
    builder' <- unsafeManagedPtrCastPtr builder
    object' <- unsafeManagedPtrCastPtr object
    signalName' <- textToCString signalName
    handlerName' <- textToCString handlerName
    maybeConnectObject <- case connectObject of
        Nothing -> return nullPtr
        Just jConnectObject -> do
            jConnectObject' <- unsafeManagedPtrCastPtr jConnectObject
            return jConnectObject'
    let flags' = gflagsToWord flags
    (__dynamic_C_BuilderConnectFunc __funPtr) builder' object' signalName' handlerName' maybeConnectObject flags' userData
    touchManagedPtr builder
    touchManagedPtr object
    whenJust connectObject touchManagedPtr
    freeMem signalName'
    freeMem handlerName'
    return ()

foreign import ccall "wrapper"
    mk_BuilderConnectFunc :: C_BuilderConnectFunc -> IO (FunPtr C_BuilderConnectFunc)

type BuilderConnectFunc =
    Gtk.Builder.Builder ->
    GObject.Object.Object ->
    T.Text ->
    T.Text ->
    Maybe GObject.Object.Object ->
    [GObject.Flags.ConnectFlags] ->
    IO ()

noBuilderConnectFunc :: Maybe BuilderConnectFunc
noBuilderConnectFunc = Nothing

type BuilderConnectFunc_WithClosures =
    Gtk.Builder.Builder ->
    GObject.Object.Object ->
    T.Text ->
    T.Text ->
    Maybe GObject.Object.Object ->
    [GObject.Flags.ConnectFlags] ->
    Ptr () ->
    IO ()

noBuilderConnectFunc_WithClosures :: Maybe BuilderConnectFunc_WithClosures
noBuilderConnectFunc_WithClosures = Nothing

drop_closures_BuilderConnectFunc :: BuilderConnectFunc -> BuilderConnectFunc_WithClosures
drop_closures_BuilderConnectFunc _f builder object signalName handlerName connectObject flags _ = _f builder object signalName handlerName connectObject flags

genClosure_BuilderConnectFunc :: BuilderConnectFunc -> IO Closure
genClosure_BuilderConnectFunc cb = do
    let cb' = drop_closures_BuilderConnectFunc cb
    let cb'' = wrap_BuilderConnectFunc Nothing cb'
    mk_BuilderConnectFunc cb'' >>= newCClosure


wrap_BuilderConnectFunc ::
    Maybe (Ptr (FunPtr C_BuilderConnectFunc)) ->
    BuilderConnectFunc_WithClosures ->
    Ptr Gtk.Builder.Builder ->
    Ptr GObject.Object.Object ->
    CString ->
    CString ->
    Ptr GObject.Object.Object ->
    CUInt ->
    Ptr () ->
    IO ()
wrap_BuilderConnectFunc funptrptr _cb builder object signalName handlerName connectObject flags userData = do
    builder' <- (newObject Gtk.Builder.Builder) builder
    object' <- (newObject GObject.Object.Object) object
    signalName' <- cstringToText signalName
    handlerName' <- cstringToText handlerName
    maybeConnectObject <-
        if connectObject == nullPtr
        then return Nothing
        else do
            connectObject' <- (newObject GObject.Object.Object) connectObject
            return $ Just connectObject'
    let flags' = wordToGFlags flags
    _cb  builder' object' signalName' handlerName' maybeConnectObject flags' userData
    maybeReleaseFunPtr funptrptr


-- callback AssistantPageFunc
--          -> Callable {returnType = Just (TBasicType TInt), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "The next page number.", sinceVersion = Nothing}, args = [Arg {argCName = "current_page", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The page number used to calculate the next page.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "A function used by gtk_assistant_set_forward_page_func() to know which\nis the next page given a current one. It\8217s called both for computing the\nnext page when the user presses the \8220forward\8221 button and for handling\nthe behavior of the \8220last\8221 button.", sinceVersion = Nothing}}
type C_AssistantPageFunc =
    Int32 ->
    Ptr () ->
    IO Int32

-- Args : [Arg {argCName = "current_page", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The page number used to calculate the next page.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_AssistantPageFunc :: FunPtr C_AssistantPageFunc -> C_AssistantPageFunc

dynamic_AssistantPageFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_AssistantPageFunc
    -> Int32
    {- ^ /@currentPage@/: The page number used to calculate the next page. -}
    -> Ptr ()
    {- ^ /@data@/: user data. -}
    -> m Int32
    {- ^ __Returns:__ The next page number. -}
dynamic_AssistantPageFunc __funPtr currentPage data_ = liftIO $ do
    result <- (__dynamic_C_AssistantPageFunc __funPtr) currentPage data_
    return result

foreign import ccall "wrapper"
    mk_AssistantPageFunc :: C_AssistantPageFunc -> IO (FunPtr C_AssistantPageFunc)

type AssistantPageFunc =
    Int32 ->
    IO Int32

noAssistantPageFunc :: Maybe AssistantPageFunc
noAssistantPageFunc = Nothing

type AssistantPageFunc_WithClosures =
    Int32 ->
    Ptr () ->
    IO Int32

noAssistantPageFunc_WithClosures :: Maybe AssistantPageFunc_WithClosures
noAssistantPageFunc_WithClosures = Nothing

drop_closures_AssistantPageFunc :: AssistantPageFunc -> AssistantPageFunc_WithClosures
drop_closures_AssistantPageFunc _f currentPage _ = _f currentPage

genClosure_AssistantPageFunc :: AssistantPageFunc -> IO Closure
genClosure_AssistantPageFunc cb = do
    let cb' = drop_closures_AssistantPageFunc cb
    let cb'' = wrap_AssistantPageFunc Nothing cb'
    mk_AssistantPageFunc cb'' >>= newCClosure


wrap_AssistantPageFunc ::
    Maybe (Ptr (FunPtr C_AssistantPageFunc)) ->
    AssistantPageFunc_WithClosures ->
    Int32 ->
    Ptr () ->
    IO Int32
wrap_AssistantPageFunc funptrptr _cb currentPage data_ = do
    result <- _cb  currentPage data_
    maybeReleaseFunPtr funptrptr
    return result


-- callback AccelMapForeach
--          -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "User data passed to gtk_accel_map_foreach() or\n gtk_accel_map_foreach_unfiltered()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Accel path of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Key of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface (Name {namespace = "Gdk", name = "ModifierType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Modifiers of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "changed", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Changed flag of the accelerator (if %TRUE, accelerator has changed\n during runtime and would need to be saved during an accelerator dump)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_AccelMapForeach =
    Ptr () ->
    CString ->
    Word32 ->
    CUInt ->
    CInt ->
    IO ()

-- Args : [Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "User data passed to gtk_accel_map_foreach() or\n gtk_accel_map_foreach_unfiltered()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Accel path of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Key of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface (Name {namespace = "Gdk", name = "ModifierType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Modifiers of the current accelerator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "changed", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Changed flag of the accelerator (if %TRUE, accelerator has changed\n during runtime and would need to be saved during an accelerator dump)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_AccelMapForeach :: FunPtr C_AccelMapForeach -> C_AccelMapForeach

dynamic_AccelMapForeach ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_AccelMapForeach
    -> Ptr ()
    {- ^ /@data@/: User data passed to 'GI.Gtk.Objects.AccelMap.accelMapForeach' or
 'GI.Gtk.Objects.AccelMap.accelMapForeachUnfiltered' -}
    -> T.Text
    {- ^ /@accelPath@/: Accel path of the current accelerator -}
    -> Word32
    {- ^ /@accelKey@/: Key of the current accelerator -}
    -> [Gdk.Flags.ModifierType]
    {- ^ /@accelMods@/: Modifiers of the current accelerator -}
    -> Bool
    {- ^ /@changed@/: Changed flag of the accelerator (if 'True', accelerator has changed
 during runtime and would need to be saved during an accelerator dump) -}
    -> m ()
dynamic_AccelMapForeach __funPtr data_ accelPath accelKey accelMods changed = liftIO $ do
    accelPath' <- textToCString accelPath
    let accelMods' = gflagsToWord accelMods
    let changed' = (fromIntegral . fromEnum) changed
    (__dynamic_C_AccelMapForeach __funPtr) data_ accelPath' accelKey accelMods' changed'
    freeMem accelPath'
    return ()

foreign import ccall "wrapper"
    mk_AccelMapForeach :: C_AccelMapForeach -> IO (FunPtr C_AccelMapForeach)

type AccelMapForeach =
    Ptr () ->
    T.Text ->
    Word32 ->
    [Gdk.Flags.ModifierType] ->
    Bool ->
    IO ()

noAccelMapForeach :: Maybe AccelMapForeach
noAccelMapForeach = Nothing

genClosure_AccelMapForeach :: AccelMapForeach -> IO Closure
genClosure_AccelMapForeach cb = do
    let cb' = wrap_AccelMapForeach Nothing cb
    mk_AccelMapForeach cb' >>= newCClosure


wrap_AccelMapForeach ::
    Maybe (Ptr (FunPtr C_AccelMapForeach)) ->
    AccelMapForeach ->
    Ptr () ->
    CString ->
    Word32 ->
    CUInt ->
    CInt ->
    IO ()
wrap_AccelMapForeach funptrptr _cb data_ accelPath accelKey accelMods changed = do
    accelPath' <- cstringToText accelPath
    let accelMods' = wordToGFlags accelMods
    let changed' = (/= 0) changed
    _cb  data_ accelPath' accelKey accelMods' changed'
    maybeReleaseFunPtr funptrptr


-- callback AccelGroupFindFunc
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "key", argType = TInterface (Name {namespace = "Gtk", name = "AccelKey"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface (Name {namespace = "GObject", name = "Closure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Just "2.2"}}
type C_AccelGroupFindFunc =
    Ptr Gtk.AccelKey.AccelKey ->
    Ptr Closure ->
    Ptr () ->
    IO CInt

-- Args : [Arg {argCName = "key", argType = TInterface (Name {namespace = "Gtk", name = "AccelKey"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface (Name {namespace = "GObject", name = "Closure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_AccelGroupFindFunc :: FunPtr C_AccelGroupFindFunc -> C_AccelGroupFindFunc

dynamic_AccelGroupFindFunc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_AccelGroupFindFunc
    -> Gtk.AccelKey.AccelKey
    -> Closure
    -> Ptr ()
    -> m Bool
dynamic_AccelGroupFindFunc __funPtr key closure data_ = liftIO $ do
    key' <- unsafeManagedPtrGetPtr key
    closure' <- unsafeManagedPtrGetPtr closure
    result <- (__dynamic_C_AccelGroupFindFunc __funPtr) key' closure' data_
    let result' = (/= 0) result
    touchManagedPtr key
    touchManagedPtr closure
    return result'

foreign import ccall "wrapper"
    mk_AccelGroupFindFunc :: C_AccelGroupFindFunc -> IO (FunPtr C_AccelGroupFindFunc)

type AccelGroupFindFunc =
    Gtk.AccelKey.AccelKey ->
    Closure ->
    IO Bool

noAccelGroupFindFunc :: Maybe AccelGroupFindFunc
noAccelGroupFindFunc = Nothing

type AccelGroupFindFunc_WithClosures =
    Gtk.AccelKey.AccelKey ->
    Closure ->
    Ptr () ->
    IO Bool

noAccelGroupFindFunc_WithClosures :: Maybe AccelGroupFindFunc_WithClosures
noAccelGroupFindFunc_WithClosures = Nothing

drop_closures_AccelGroupFindFunc :: AccelGroupFindFunc -> AccelGroupFindFunc_WithClosures
drop_closures_AccelGroupFindFunc _f key closure _ = _f key closure

genClosure_AccelGroupFindFunc :: AccelGroupFindFunc -> IO Closure
genClosure_AccelGroupFindFunc cb = do
    let cb' = drop_closures_AccelGroupFindFunc cb
    let cb'' = wrap_AccelGroupFindFunc Nothing cb'
    mk_AccelGroupFindFunc cb'' >>= newCClosure


wrap_AccelGroupFindFunc ::
    Maybe (Ptr (FunPtr C_AccelGroupFindFunc)) ->
    AccelGroupFindFunc_WithClosures ->
    Ptr Gtk.AccelKey.AccelKey ->
    Ptr Closure ->
    Ptr () ->
    IO CInt
wrap_AccelGroupFindFunc funptrptr _cb key closure data_ = do
    key' <- (newPtr Gtk.AccelKey.AccelKey) key
    B.ManagedPtr.withTransient Closure closure $ \closure' -> do
        result <- _cb  key' closure' data_
        maybeReleaseFunPtr funptrptr
        let result' = (fromIntegral . fromEnum) result
        return result'


-- callback AccelGroupActivate
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "accel_group", argType = TInterface (Name {namespace = "Gtk", name = "AccelGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "acceleratable", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifier", argType = TInterface (Name {namespace = "Gdk", name = "ModifierType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_AccelGroupActivate =
    Ptr Gtk.AccelGroup.AccelGroup ->
    Ptr GObject.Object.Object ->
    Word32 ->
    CUInt ->
    IO CInt

-- Args : [Arg {argCName = "accel_group", argType = TInterface (Name {namespace = "Gtk", name = "AccelGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "acceleratable", argType = TInterface (Name {namespace = "GObject", name = "Object"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifier", argType = TInterface (Name {namespace = "Gdk", name = "ModifierType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_AccelGroupActivate :: FunPtr C_AccelGroupActivate -> C_AccelGroupActivate

dynamic_AccelGroupActivate ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.AccelGroup.IsAccelGroup a, GObject.Object.IsObject b) =>
    FunPtr C_AccelGroupActivate
    -> a
    -> b
    -> Word32
    -> [Gdk.Flags.ModifierType]
    -> m Bool
dynamic_AccelGroupActivate __funPtr accelGroup acceleratable keyval modifier = liftIO $ do
    accelGroup' <- unsafeManagedPtrCastPtr accelGroup
    acceleratable' <- unsafeManagedPtrCastPtr acceleratable
    let modifier' = gflagsToWord modifier
    result <- (__dynamic_C_AccelGroupActivate __funPtr) accelGroup' acceleratable' keyval modifier'
    let result' = (/= 0) result
    touchManagedPtr accelGroup
    touchManagedPtr acceleratable
    return result'

foreign import ccall "wrapper"
    mk_AccelGroupActivate :: C_AccelGroupActivate -> IO (FunPtr C_AccelGroupActivate)

type AccelGroupActivate =
    Gtk.AccelGroup.AccelGroup ->
    GObject.Object.Object ->
    Word32 ->
    [Gdk.Flags.ModifierType] ->
    IO Bool

noAccelGroupActivate :: Maybe AccelGroupActivate
noAccelGroupActivate = Nothing

genClosure_AccelGroupActivate :: AccelGroupActivate -> IO Closure
genClosure_AccelGroupActivate cb = do
    let cb' = wrap_AccelGroupActivate Nothing cb
    mk_AccelGroupActivate cb' >>= newCClosure


wrap_AccelGroupActivate ::
    Maybe (Ptr (FunPtr C_AccelGroupActivate)) ->
    AccelGroupActivate ->
    Ptr Gtk.AccelGroup.AccelGroup ->
    Ptr GObject.Object.Object ->
    Word32 ->
    CUInt ->
    IO CInt
wrap_AccelGroupActivate funptrptr _cb accelGroup acceleratable keyval modifier = do
    accelGroup' <- (newObject Gtk.AccelGroup.AccelGroup) accelGroup
    acceleratable' <- (newObject GObject.Object.Object) acceleratable
    let modifier' = wordToGFlags modifier
    result <- _cb  accelGroup' acceleratable' keyval modifier'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'