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

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

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.GValue as B.GValue
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TreeViewSearchPositionFunc`.
foreign import ccall "wrapper"
    mk_TreeViewSearchPositionFunc :: C_TreeViewSearchPositionFunc -> IO (FunPtr C_TreeViewSearchPositionFunc)

{- |
/No description available in the introspection data./
-}
type TreeViewSearchPositionFunc =
    Gtk.TreeView.TreeView
    -> Gtk.Widget.Widget
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchPositionFunc`@.
noTreeViewSearchPositionFunc :: Maybe TreeViewSearchPositionFunc
noTreeViewSearchPositionFunc = Nothing

{- |
/No description available in the introspection data./
-}
type TreeViewSearchPositionFunc_WithClosures =
    Gtk.TreeView.TreeView
    -> Gtk.Widget.Widget
    -> Ptr ()
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchPositionFunc_WithClosures`@.
noTreeViewSearchPositionFunc_WithClosures :: Maybe TreeViewSearchPositionFunc_WithClosures
noTreeViewSearchPositionFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeViewSearchPositionFunc :: TreeViewSearchPositionFunc -> TreeViewSearchPositionFunc_WithClosures
drop_closures_TreeViewSearchPositionFunc _f treeView searchDialog _ = _f treeView searchDialog

-- | Wrap the callback into a `Closure`.
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 a `TreeViewSearchPositionFunc` into a `C_TreeViewSearchPositionFunc`.
wrap_TreeViewSearchPositionFunc ::
    Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc)) ->
    TreeViewSearchPositionFunc_WithClosures ->
    C_TreeViewSearchPositionFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeViewSearchEqualFunc`.
foreign import ccall "wrapper"
    mk_TreeViewSearchEqualFunc :: C_TreeViewSearchEqualFunc -> IO (FunPtr C_TreeViewSearchEqualFunc)

{- |
A function used for checking whether a row in /@model@/ matches
a search key string entered by the user. Note the return value
is reversed from what you would normally expect, though it
has some similarity to @/strcmp()/@ returning 0 for equal strings.
-}
type TreeViewSearchEqualFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@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@/. -}
    -> IO Bool
    {- ^ __Returns:__ 'False' if the row matches, 'True' otherwise. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchEqualFunc`@.
noTreeViewSearchEqualFunc :: Maybe TreeViewSearchEqualFunc
noTreeViewSearchEqualFunc = Nothing

{- |
A function used for checking whether a row in /@model@/ matches
a search key string entered by the user. Note the return value
is reversed from what you would normally expect, though it
has some similarity to @/strcmp()/@ returning 0 for equal strings.
-}
type TreeViewSearchEqualFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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' -}
    -> IO Bool
    {- ^ __Returns:__ 'False' if the row matches, 'True' otherwise. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchEqualFunc_WithClosures`@.
noTreeViewSearchEqualFunc_WithClosures :: Maybe TreeViewSearchEqualFunc_WithClosures
noTreeViewSearchEqualFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeViewSearchEqualFunc :: TreeViewSearchEqualFunc -> TreeViewSearchEqualFunc_WithClosures
drop_closures_TreeViewSearchEqualFunc _f model column key iter _ = _f model column key iter

-- | Wrap the callback into a `Closure`.
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 a `TreeViewSearchEqualFunc` into a `C_TreeViewSearchEqualFunc`.
wrap_TreeViewSearchEqualFunc ::
    Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc)) ->
    TreeViewSearchEqualFunc_WithClosures ->
    C_TreeViewSearchEqualFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeViewRowSeparatorFunc`.
foreign import ccall "wrapper"
    mk_TreeViewRowSeparatorFunc :: C_TreeViewRowSeparatorFunc -> IO (FunPtr C_TreeViewRowSeparatorFunc)

{- |
Function type for determining whether the row pointed to by /@iter@/ should
be rendered as a separator. A common way to implement this is to have a
boolean column in the model, whose values the 'GI.Gtk.Callbacks.TreeViewRowSeparatorFunc'
returns.
-}
type TreeViewRowSeparatorFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@model@/: the 'GI.Gtk.Interfaces.TreeModel.TreeModel' -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TreeIter.TreeIter' pointing at a row in /@model@/ -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the row is a separator -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewRowSeparatorFunc`@.
noTreeViewRowSeparatorFunc :: Maybe TreeViewRowSeparatorFunc
noTreeViewRowSeparatorFunc = Nothing

{- |
Function type for determining whether the row pointed to by /@iter@/ should
be rendered as a separator. A common way to implement this is to have a
boolean column in the model, whose values the 'GI.Gtk.Callbacks.TreeViewRowSeparatorFunc'
returns.
-}
type TreeViewRowSeparatorFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the row is a separator -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewRowSeparatorFunc_WithClosures`@.
noTreeViewRowSeparatorFunc_WithClosures :: Maybe TreeViewRowSeparatorFunc_WithClosures
noTreeViewRowSeparatorFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeViewRowSeparatorFunc :: TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
drop_closures_TreeViewRowSeparatorFunc _f model iter _ = _f model iter

-- | Wrap the callback into a `Closure`.
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 a `TreeViewRowSeparatorFunc` into a `C_TreeViewRowSeparatorFunc`.
wrap_TreeViewRowSeparatorFunc ::
    Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc)) ->
    TreeViewRowSeparatorFunc_WithClosures ->
    C_TreeViewRowSeparatorFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TreeViewMappingFunc`.
foreign import ccall "wrapper"
    mk_TreeViewMappingFunc :: C_TreeViewMappingFunc -> IO (FunPtr C_TreeViewMappingFunc)

{- |
Function used for 'GI.Gtk.Objects.TreeView.treeViewMapExpandedRows'.
-}
type TreeViewMappingFunc =
    Gtk.TreeView.TreeView
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The path that’s expanded -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewMappingFunc`@.
noTreeViewMappingFunc :: Maybe TreeViewMappingFunc
noTreeViewMappingFunc = Nothing

{- |
Function used for 'GI.Gtk.Objects.TreeView.treeViewMapExpandedRows'.
-}
type TreeViewMappingFunc_WithClosures =
    Gtk.TreeView.TreeView
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> Gtk.TreePath.TreePath
    {- ^ /@path@/: The path that’s expanded -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewMappingFunc_WithClosures`@.
noTreeViewMappingFunc_WithClosures :: Maybe TreeViewMappingFunc_WithClosures
noTreeViewMappingFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeViewMappingFunc :: TreeViewMappingFunc -> TreeViewMappingFunc_WithClosures
drop_closures_TreeViewMappingFunc _f treeView path _ = _f treeView path

-- | Wrap the callback into a `Closure`.
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 a `TreeViewMappingFunc` into a `C_TreeViewMappingFunc`.
wrap_TreeViewMappingFunc ::
    Maybe (Ptr (FunPtr C_TreeViewMappingFunc)) ->
    TreeViewMappingFunc_WithClosures ->
    C_TreeViewMappingFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeViewColumnDropFunc`.
foreign import ccall "wrapper"
    mk_TreeViewColumnDropFunc :: C_TreeViewColumnDropFunc -> IO (FunPtr C_TreeViewColumnDropFunc)

{- |
Function type for determining whether /@column@/ can be dropped in a
particular spot (as determined by /@prevColumn@/ and /@nextColumn@/).  In
left to right locales, /@prevColumn@/ is on the left of the potential drop
spot, and /@nextColumn@/ is on the right.  In right to left mode, this is
reversed.  This function should return 'True' if the spot is a valid drop
spot.  Please note that returning 'True' does not actually indicate that
the column drop was made, but is meant only to indicate a possible drop
spot to the user.
-}
type TreeViewColumnDropFunc =
    Gtk.TreeView.TreeView
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@column@/: The 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@prevColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/ -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@nextColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/ -}
    -> IO Bool
    {- ^ __Returns:__ 'True', if /@column@/ can be dropped in this spot -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewColumnDropFunc`@.
noTreeViewColumnDropFunc :: Maybe TreeViewColumnDropFunc
noTreeViewColumnDropFunc = Nothing

{- |
Function type for determining whether /@column@/ can be dropped in a
particular spot (as determined by /@prevColumn@/ and /@nextColumn@/).  In
left to right locales, /@prevColumn@/ is on the left of the potential drop
spot, and /@nextColumn@/ is on the right.  In right to left mode, this is
reversed.  This function should return 'True' if the spot is a valid drop
spot.  Please note that returning 'True' does not actually indicate that
the column drop was made, but is meant only to indicate a possible drop
spot to the user.
-}
type TreeViewColumnDropFunc_WithClosures =
    Gtk.TreeView.TreeView
    {- ^ /@treeView@/: A 'GI.Gtk.Objects.TreeView.TreeView' -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@column@/: The 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@prevColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/ -}
    -> Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@nextColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/ -}
    -> Ptr ()
    {- ^ /@data@/: user data -}
    -> IO Bool
    {- ^ __Returns:__ 'True', if /@column@/ can be dropped in this spot -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewColumnDropFunc_WithClosures`@.
noTreeViewColumnDropFunc_WithClosures :: Maybe TreeViewColumnDropFunc_WithClosures
noTreeViewColumnDropFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeViewColumnDropFunc :: TreeViewColumnDropFunc -> TreeViewColumnDropFunc_WithClosures
drop_closures_TreeViewColumnDropFunc _f treeView column prevColumn nextColumn _ = _f treeView column prevColumn nextColumn

-- | Wrap the callback into a `Closure`.
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 a `TreeViewColumnDropFunc` into a `C_TreeViewColumnDropFunc`.
wrap_TreeViewColumnDropFunc ::
    Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc)) ->
    TreeViewColumnDropFunc_WithClosures ->
    C_TreeViewColumnDropFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeSelectionFunc`.
foreign import ccall "wrapper"
    mk_TreeSelectionFunc :: C_TreeSelectionFunc -> IO (FunPtr C_TreeSelectionFunc)

{- |
A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSetSelectFunction' to filter
whether or not a row may be selected.  It is called whenever a row\'s
state might change.  A return value of 'True' indicates to /@selection@/
that it is okay to change the selection.
-}
type TreeSelectionFunc =
    Gtk.TreeSelection.TreeSelection
    {- ^ /@selection@/: A 'GI.Gtk.Objects.TreeSelection.TreeSelection' -}
    -> Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO Bool
    {- ^ __Returns:__ 'True', if the selection state of the row can be toggled -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionFunc`@.
noTreeSelectionFunc :: Maybe TreeSelectionFunc
noTreeSelectionFunc = Nothing

{- |
A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSetSelectFunction' to filter
whether or not a row may be selected.  It is called whenever a row\'s
state might change.  A return value of 'True' indicates to /@selection@/
that it is okay to change the selection.
-}
type TreeSelectionFunc_WithClosures =
    Gtk.TreeSelection.TreeSelection
    {- ^ /@selection@/: A 'GI.Gtk.Objects.TreeSelection.TreeSelection' -}
    -> Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO Bool
    {- ^ __Returns:__ 'True', if the selection state of the row can be toggled -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionFunc_WithClosures`@.
noTreeSelectionFunc_WithClosures :: Maybe TreeSelectionFunc_WithClosures
noTreeSelectionFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeSelectionFunc :: TreeSelectionFunc -> TreeSelectionFunc_WithClosures
drop_closures_TreeSelectionFunc _f selection model path pathCurrentlySelected _ = _f selection model path pathCurrentlySelected

-- | Wrap the callback into a `Closure`.
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 a `TreeSelectionFunc` into a `C_TreeSelectionFunc`.
wrap_TreeSelectionFunc ::
    Maybe (Ptr (FunPtr C_TreeSelectionFunc)) ->
    TreeSelectionFunc_WithClosures ->
    C_TreeSelectionFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TreeSelectionForeachFunc`.
foreign import ccall "wrapper"
    mk_TreeSelectionForeachFunc :: C_TreeSelectionForeachFunc -> IO (FunPtr C_TreeSelectionForeachFunc)

{- |
A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSelectedForeach' to map all
selected rows.  It will be called on every selected row in the view.
-}
type TreeSelectionForeachFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionForeachFunc`@.
noTreeSelectionForeachFunc :: Maybe TreeSelectionForeachFunc
noTreeSelectionForeachFunc = Nothing

{- |
A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSelectedForeach' to map all
selected rows.  It will be called on every selected row in the view.
-}
type TreeSelectionForeachFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionForeachFunc_WithClosures`@.
noTreeSelectionForeachFunc_WithClosures :: Maybe TreeSelectionForeachFunc_WithClosures
noTreeSelectionForeachFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeSelectionForeachFunc :: TreeSelectionForeachFunc -> TreeSelectionForeachFunc_WithClosures
drop_closures_TreeSelectionForeachFunc _f model path iter _ = _f model path iter

-- | Wrap the callback into a `Closure`.
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 a `TreeSelectionForeachFunc` into a `C_TreeSelectionForeachFunc`.
wrap_TreeSelectionForeachFunc ::
    Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc)) ->
    TreeSelectionForeachFunc_WithClosures ->
    C_TreeSelectionForeachFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeModelForeachFunc`.
foreign import ccall "wrapper"
    mk_TreeModelForeachFunc :: C_TreeModelForeachFunc -> IO (FunPtr C_TreeModelForeachFunc)

{- |
Type of the callback passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach' to
iterate over the rows in a tree model.
-}
type TreeModelForeachFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@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' -}
    -> IO Bool
    {- ^ __Returns:__ 'True' to stop iterating, 'False' to continue -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelForeachFunc`@.
noTreeModelForeachFunc :: Maybe TreeModelForeachFunc
noTreeModelForeachFunc = Nothing

{- |
Type of the callback passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach' to
iterate over the rows in a tree model.
-}
type TreeModelForeachFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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' -}
    -> IO Bool
    {- ^ __Returns:__ 'True' to stop iterating, 'False' to continue -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelForeachFunc_WithClosures`@.
noTreeModelForeachFunc_WithClosures :: Maybe TreeModelForeachFunc_WithClosures
noTreeModelForeachFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeModelForeachFunc :: TreeModelForeachFunc -> TreeModelForeachFunc_WithClosures
drop_closures_TreeModelForeachFunc _f model path iter _ = _f model path iter

-- | Wrap the callback into a `Closure`.
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 a `TreeModelForeachFunc` into a `C_TreeModelForeachFunc`.
wrap_TreeModelForeachFunc ::
    Maybe (Ptr (FunPtr C_TreeModelForeachFunc)) ->
    TreeModelForeachFunc_WithClosures ->
    C_TreeModelForeachFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TreeModelFilterVisibleFunc`.
foreign import ccall "wrapper"
    mk_TreeModelFilterVisibleFunc :: C_TreeModelFilterVisibleFunc -> IO (FunPtr C_TreeModelFilterVisibleFunc)

{- |
A function which decides whether the row indicated by /@iter@/ is visible.
-}
type TreeModelFilterVisibleFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO Bool
    {- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterVisibleFunc`@.
noTreeModelFilterVisibleFunc :: Maybe TreeModelFilterVisibleFunc
noTreeModelFilterVisibleFunc = Nothing

{- |
A function which decides whether the row indicated by /@iter@/ is visible.
-}
type TreeModelFilterVisibleFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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' -}
    -> IO Bool
    {- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterVisibleFunc_WithClosures`@.
noTreeModelFilterVisibleFunc_WithClosures :: Maybe TreeModelFilterVisibleFunc_WithClosures
noTreeModelFilterVisibleFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeModelFilterVisibleFunc :: TreeModelFilterVisibleFunc -> TreeModelFilterVisibleFunc_WithClosures
drop_closures_TreeModelFilterVisibleFunc _f model iter _ = _f model iter

-- | Wrap the callback into a `Closure`.
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 a `TreeModelFilterVisibleFunc` into a `C_TreeModelFilterVisibleFunc`.
wrap_TreeModelFilterVisibleFunc ::
    Maybe (Ptr (FunPtr C_TreeModelFilterVisibleFunc)) ->
    TreeModelFilterVisibleFunc_WithClosures ->
    C_TreeModelFilterVisibleFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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

-- | Generate a function pointer callable from C code, from a `C_TreeIterCompareFunc`.
foreign import ccall "wrapper"
    mk_TreeIterCompareFunc :: C_TreeIterCompareFunc -> IO (FunPtr C_TreeIterCompareFunc)

{- |
A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
integer if /@a@/ sorts before /@b@/, /@a@/ sorts with /@b@/, or /@a@/ sorts after /@b@/
respectively. If two iters compare as equal, their order in the sorted model
is undefined. In order to ensure that the 'GI.Gtk.Interfaces.TreeSortable.TreeSortable' behaves as
expected, the GtkTreeIterCompareFunc must define a partial order on
the model, i.e. it must be reflexive, antisymmetric and transitive.

For example, if /@model@/ is a product catalogue, then a compare function
for the “price” column could be one which returns
@price_of(\@a) - price_of(\@b)@.
-}
type TreeIterCompareFunc =
    Gtk.TreeModel.TreeModel
    {- ^ /@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@/ -}
    -> IO Int32
    {- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
  /@a@/ sorts before, with or after /@b@/ -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeIterCompareFunc`@.
noTreeIterCompareFunc :: Maybe TreeIterCompareFunc
noTreeIterCompareFunc = Nothing

{- |
A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
integer if /@a@/ sorts before /@b@/, /@a@/ sorts with /@b@/, or /@a@/ sorts after /@b@/
respectively. If two iters compare as equal, their order in the sorted model
is undefined. In order to ensure that the 'GI.Gtk.Interfaces.TreeSortable.TreeSortable' behaves as
expected, the GtkTreeIterCompareFunc must define a partial order on
the model, i.e. it must be reflexive, antisymmetric and transitive.

For example, if /@model@/ is a product catalogue, then a compare function
for the “price” column could be one which returns
@price_of(\@a) - price_of(\@b)@.
-}
type TreeIterCompareFunc_WithClosures =
    Gtk.TreeModel.TreeModel
    {- ^ /@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' -}
    -> IO Int32
    {- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
  /@a@/ sorts before, with or after /@b@/ -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeIterCompareFunc_WithClosures`@.
noTreeIterCompareFunc_WithClosures :: Maybe TreeIterCompareFunc_WithClosures
noTreeIterCompareFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeIterCompareFunc :: TreeIterCompareFunc -> TreeIterCompareFunc_WithClosures
drop_closures_TreeIterCompareFunc _f model a b _ = _f model a b

-- | Wrap the callback into a `Closure`.
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 a `TreeIterCompareFunc` into a `C_TreeIterCompareFunc`.
wrap_TreeIterCompareFunc ::
    Maybe (Ptr (FunPtr C_TreeIterCompareFunc)) ->
    TreeIterCompareFunc_WithClosures ->
    C_TreeIterCompareFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TreeDestroyCountFunc`.
foreign import ccall "wrapper"
    mk_TreeDestroyCountFunc :: C_TreeDestroyCountFunc -> IO (FunPtr C_TreeDestroyCountFunc)

{- |
/No description available in the introspection data./
-}
type TreeDestroyCountFunc =
    Gtk.TreeView.TreeView
    -> Gtk.TreePath.TreePath
    -> Int32
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeDestroyCountFunc`@.
noTreeDestroyCountFunc :: Maybe TreeDestroyCountFunc
noTreeDestroyCountFunc = Nothing

{- |
/No description available in the introspection data./
-}
type TreeDestroyCountFunc_WithClosures =
    Gtk.TreeView.TreeView
    -> Gtk.TreePath.TreePath
    -> Int32
    -> Ptr ()
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeDestroyCountFunc_WithClosures`@.
noTreeDestroyCountFunc_WithClosures :: Maybe TreeDestroyCountFunc_WithClosures
noTreeDestroyCountFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeDestroyCountFunc :: TreeDestroyCountFunc -> TreeDestroyCountFunc_WithClosures
drop_closures_TreeDestroyCountFunc _f treeView path children _ = _f treeView path children

-- | Wrap the callback into a `Closure`.
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 a `TreeDestroyCountFunc` into a `C_TreeDestroyCountFunc`.
wrap_TreeDestroyCountFunc ::
    Maybe (Ptr (FunPtr C_TreeDestroyCountFunc)) ->
    TreeDestroyCountFunc_WithClosures ->
    C_TreeDestroyCountFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TreeCellDataFunc`.
foreign import ccall "wrapper"
    mk_TreeCellDataFunc :: C_TreeCellDataFunc -> IO (FunPtr C_TreeCellDataFunc)

{- |
A function to set the properties of a cell instead of just using the
straight mapping between the cell and the model.  This is useful for
customizing the cell renderer.  For example, a function might get an
integer from the /@treeModel@/, and render it to the “text” attribute of
“cell” by converting it to its written equivalent.  This is set by
calling 'GI.Gtk.Objects.TreeViewColumn.treeViewColumnSetCellDataFunc'
-}
type TreeCellDataFunc =
    Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@treeColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' -}
    -> Gtk.CellRenderer.CellRenderer
    {- ^ /@cell@/: The 'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/ -}
    -> Gtk.TreeModel.TreeModel
    {- ^ /@treeModel@/: The 'GI.Gtk.Interfaces.TreeModel.TreeModel' being rendered -}
    -> Gtk.TreeIter.TreeIter
    {- ^ /@iter@/: A 'GI.Gtk.Structs.TreeIter.TreeIter' of the current row rendered -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeCellDataFunc`@.
noTreeCellDataFunc :: Maybe TreeCellDataFunc
noTreeCellDataFunc = Nothing

{- |
A function to set the properties of a cell instead of just using the
straight mapping between the cell and the model.  This is useful for
customizing the cell renderer.  For example, a function might get an
integer from the /@treeModel@/, and render it to the “text” attribute of
“cell” by converting it to its written equivalent.  This is set by
calling 'GI.Gtk.Objects.TreeViewColumn.treeViewColumnSetCellDataFunc'
-}
type TreeCellDataFunc_WithClosures =
    Gtk.TreeViewColumn.TreeViewColumn
    {- ^ /@treeColumn@/: A 'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' -}
    -> Gtk.CellRenderer.CellRenderer
    {- ^ /@cell@/: The 'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/ -}
    -> Gtk.TreeModel.TreeModel
    {- ^ /@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 -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TreeCellDataFunc_WithClosures`@.
noTreeCellDataFunc_WithClosures :: Maybe TreeCellDataFunc_WithClosures
noTreeCellDataFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TreeCellDataFunc :: TreeCellDataFunc -> TreeCellDataFunc_WithClosures
drop_closures_TreeCellDataFunc _f treeColumn cell treeModel iter _ = _f treeColumn cell treeModel iter

-- | Wrap the callback into a `Closure`.
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 a `TreeCellDataFunc` into a `C_TreeCellDataFunc`.
wrap_TreeCellDataFunc ::
    Maybe (Ptr (FunPtr C_TreeCellDataFunc)) ->
    TreeCellDataFunc_WithClosures ->
    C_TreeCellDataFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TranslateFunc`.
foreign import ccall "wrapper"
    mk_TranslateFunc :: C_TranslateFunc -> IO (FunPtr C_TranslateFunc)

{-# DEPRECATED TranslateFunc ["(Since version 3.10)"] #-}
{- |
The function used to translate messages in e.g. 'GI.Gtk.Objects.IconFactory.IconFactory'
and 'GI.Gtk.Objects.ActionGroup.ActionGroup'.
-}
type 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'. -}
    -> IO T.Text
    {- ^ __Returns:__ the translated message -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TranslateFunc`@.
noTranslateFunc :: Maybe TranslateFunc
noTranslateFunc = Nothing

{- |
The function used to translate messages in e.g. 'GI.Gtk.Objects.IconFactory.IconFactory'
and 'GI.Gtk.Objects.ActionGroup.ActionGroup'.
-}
type TranslateFunc_WithClosures =
    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 -}
    -> IO T.Text
    {- ^ __Returns:__ the translated message -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TranslateFunc_WithClosures`@.
noTranslateFunc_WithClosures :: Maybe TranslateFunc_WithClosures
noTranslateFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TranslateFunc :: TranslateFunc -> TranslateFunc_WithClosures
drop_closures_TranslateFunc _f path _ = _f path

-- | Wrap the callback into a `Closure`.
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 a `TranslateFunc` into a `C_TranslateFunc`.
wrap_TranslateFunc ::
    Maybe (Ptr (FunPtr C_TranslateFunc)) ->
    TranslateFunc_WithClosures ->
    C_TranslateFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TickCallback`.
foreign import ccall "wrapper"
    mk_TickCallback :: C_TickCallback -> IO (FunPtr C_TickCallback)

{- |
Callback type for adding a function to update animations. See 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.

/Since: 3.8/
-}
type TickCallback =
    Gtk.Widget.Widget
    {- ^ /@widget@/: the widget -}
    -> Gdk.FrameClock.FrameClock
    {- ^ /@frameClock@/: the frame clock for the widget (same as calling 'GI.Gtk.Objects.Widget.widgetGetFrameClock') -}
    -> IO 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. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TickCallback`@.
noTickCallback :: Maybe TickCallback
noTickCallback = Nothing

{- |
Callback type for adding a function to update animations. See 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.

/Since: 3.8/
-}
type TickCallback_WithClosures =
    Gtk.Widget.Widget
    {- ^ /@widget@/: the widget -}
    -> Gdk.FrameClock.FrameClock
    {- ^ /@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'. -}
    -> IO 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. -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TickCallback_WithClosures`@.
noTickCallback_WithClosures :: Maybe TickCallback_WithClosures
noTickCallback_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TickCallback :: TickCallback -> TickCallback_WithClosures
drop_closures_TickCallback _f widget frameClock _ = _f widget frameClock

-- | Wrap the callback into a `Closure`.
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 a `TickCallback` into a `C_TickCallback`.
wrap_TickCallback ::
    Maybe (Ptr (FunPtr C_TickCallback)) ->
    TickCallback_WithClosures ->
    C_TickCallback
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_TextTagTableForeach`.
foreign import ccall "wrapper"
    mk_TextTagTableForeach :: C_TextTagTableForeach -> IO (FunPtr C_TextTagTableForeach)

{- |
/No description available in the introspection data./
-}
type TextTagTableForeach =
    Gtk.TextTag.TextTag
    {- ^ /@tag@/: the 'GI.Gtk.Objects.TextTag.TextTag' -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextTagTableForeach`@.
noTextTagTableForeach :: Maybe TextTagTableForeach
noTextTagTableForeach = Nothing

{- |
/No description available in the introspection data./
-}
type TextTagTableForeach_WithClosures =
    Gtk.TextTag.TextTag
    {- ^ /@tag@/: the 'GI.Gtk.Objects.TextTag.TextTag' -}
    -> Ptr ()
    {- ^ /@data@/: data passed to 'GI.Gtk.Objects.TextTagTable.textTagTableForeach' -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextTagTableForeach_WithClosures`@.
noTextTagTableForeach_WithClosures :: Maybe TextTagTableForeach_WithClosures
noTextTagTableForeach_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TextTagTableForeach :: TextTagTableForeach -> TextTagTableForeach_WithClosures
drop_closures_TextTagTableForeach _f tag _ = _f tag

-- | Wrap the callback into a `Closure`.
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 a `TextTagTableForeach` into a `C_TextTagTableForeach`.
wrap_TextTagTableForeach ::
    Maybe (Ptr (FunPtr C_TextTagTableForeach)) ->
    TextTagTableForeach_WithClosures ->
    C_TextTagTableForeach
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_TextCharPredicate`.
foreign import ccall "wrapper"
    mk_TextCharPredicate :: C_TextCharPredicate -> IO (FunPtr C_TextCharPredicate)

{- |
/No description available in the introspection data./
-}
type TextCharPredicate =
    Char
    -> IO Bool

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextCharPredicate`@.
noTextCharPredicate :: Maybe TextCharPredicate
noTextCharPredicate = Nothing

{- |
/No description available in the introspection data./
-}
type TextCharPredicate_WithClosures =
    Char
    -> Ptr ()
    -> IO Bool

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextCharPredicate_WithClosures`@.
noTextCharPredicate_WithClosures :: Maybe TextCharPredicate_WithClosures
noTextCharPredicate_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TextCharPredicate :: TextCharPredicate -> TextCharPredicate_WithClosures
drop_closures_TextCharPredicate _f ch _ = _f ch

-- | Wrap the callback into a `Closure`.
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 a `TextCharPredicate` into a `C_TextCharPredicate`.
wrap_TextCharPredicate ::
    Maybe (Ptr (FunPtr C_TextCharPredicate)) ->
    TextCharPredicate_WithClosures ->
    C_TextCharPredicate
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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

-- | Generate a function pointer callable from C code, from a `C_TextBufferSerializeFunc`.
foreign import ccall "wrapper"
    mk_TextBufferSerializeFunc :: C_TextBufferSerializeFunc -> IO (FunPtr C_TextBufferSerializeFunc)

{- |
A function that is called to serialize the content of a text buffer.
It must return the serialized form of the content.
-}
type TextBufferSerializeFunc =
    Gtk.TextBuffer.TextBuffer
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered -}
    -> Gtk.TextBuffer.TextBuffer
    {- ^ /@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 -}
    -> IO Word8
    {- ^ __Returns:__ a newly-allocated array of guint8 which contains
the serialized data, or 'Nothing' if an error occurred -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferSerializeFunc`@.
noTextBufferSerializeFunc :: Maybe TextBufferSerializeFunc
noTextBufferSerializeFunc = Nothing

{- |
A function that is called to serialize the content of a text buffer.
It must return the serialized form of the content.
-}
type TextBufferSerializeFunc_WithClosures =
    Gtk.TextBuffer.TextBuffer
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered -}
    -> Gtk.TextBuffer.TextBuffer
    {- ^ /@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 -}
    -> IO Word8
    {- ^ __Returns:__ a newly-allocated array of guint8 which contains
the serialized data, or 'Nothing' if an error occurred -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferSerializeFunc_WithClosures`@.
noTextBufferSerializeFunc_WithClosures :: Maybe TextBufferSerializeFunc_WithClosures
noTextBufferSerializeFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_TextBufferSerializeFunc :: TextBufferSerializeFunc -> TextBufferSerializeFunc_WithClosures
drop_closures_TextBufferSerializeFunc _f registerBuffer contentBuffer start end length_ _ = _f registerBuffer contentBuffer start end length_

-- | Wrap the callback into a `Closure`.
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 a `TextBufferSerializeFunc` into a `C_TextBufferSerializeFunc`.
wrap_TextBufferSerializeFunc ::
    Maybe (Ptr (FunPtr C_TextBufferSerializeFunc)) ->
    TextBufferSerializeFunc_WithClosures ->
    C_TextBufferSerializeFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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_'
     )

-- | Generate a function pointer callable from C code, from a `C_TextBufferDeserializeFunc`.
foreign import ccall "wrapper"
    mk_TextBufferDeserializeFunc :: C_TextBufferDeserializeFunc -> IO (FunPtr C_TextBufferDeserializeFunc)

{- |
A function that is called to deserialize rich text that has been
serialized with 'GI.Gtk.Objects.TextBuffer.textBufferSerialize', and insert it at /@iter@/.
-}
type TextBufferDeserializeFunc =
    Gtk.TextBuffer.TextBuffer
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with -}
    -> Gtk.TextBuffer.TextBuffer
    {- ^ /@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 -}
    -> IO ()
    {- ^ __Returns:__ 'True' on success, 'False' otherwise /(Can throw 'Data.GI.Base.GError.GError')/ -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferDeserializeFunc`@.
noTextBufferDeserializeFunc :: Maybe TextBufferDeserializeFunc
noTextBufferDeserializeFunc = Nothing

{- |
A function that is called to deserialize rich text that has been
serialized with 'GI.Gtk.Objects.TextBuffer.textBufferSerialize', and insert it at /@iter@/.
-}
type TextBufferDeserializeFunc_WithClosures =
    Gtk.TextBuffer.TextBuffer
    {- ^ /@registerBuffer@/: the 'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with -}
    -> Gtk.TextBuffer.TextBuffer
    {- ^ /@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 -}
    -> IO ()
    {- ^ __Returns:__ 'True' on success, 'False' otherwise /(Can throw 'Data.GI.Base.GError.GError')/ -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferDeserializeFunc_WithClosures`@.
noTextBufferDeserializeFunc_WithClosures :: Maybe TextBufferDeserializeFunc_WithClosures
noTextBufferDeserializeFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'
     )

-- | Generate a function pointer callable from C code, from a `C_StylePropertyParser`.
foreign import ccall "wrapper"
    mk_StylePropertyParser :: C_StylePropertyParser -> IO (FunPtr C_StylePropertyParser)

{- |
/No description available in the introspection data./
-}
type StylePropertyParser =
    T.Text
    -> GValue
    -> IO ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `StylePropertyParser`@.
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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

-- | Generate a function pointer callable from C code, from a `C_RecentSortFunc`.
foreign import ccall "wrapper"
    mk_RecentSortFunc :: C_RecentSortFunc -> IO (FunPtr C_RecentSortFunc)

{- |
/No description available in the introspection data./
-}
type RecentSortFunc =
    Gtk.RecentInfo.RecentInfo
    -> Gtk.RecentInfo.RecentInfo
    -> IO Int32

-- | A convenience synonym for @`Nothing` :: `Maybe` `RecentSortFunc`@.
noRecentSortFunc :: Maybe RecentSortFunc
noRecentSortFunc = Nothing

{- |
/No description available in the introspection data./
-}
type RecentSortFunc_WithClosures =
    Gtk.RecentInfo.RecentInfo
    -> Gtk.RecentInfo.RecentInfo
    -> Ptr ()
    -> IO Int32

-- | A convenience synonym for @`Nothing` :: `Maybe` `RecentSortFunc_WithClosures`@.
noRecentSortFunc_WithClosures :: Maybe RecentSortFunc_WithClosures
noRecentSortFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_RecentSortFunc :: RecentSortFunc -> RecentSortFunc_WithClosures
drop_closures_RecentSortFunc _f a b _ = _f a b

-- | Wrap the callback into a `Closure`.
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 a `RecentSortFunc` into a `C_RecentSortFunc`.
wrap_RecentSortFunc ::
    Maybe (Ptr (FunPtr C_RecentSortFunc)) ->
    RecentSortFunc_WithClosures ->
    C_RecentSortFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_RecentFilterFunc`.
foreign import ccall "wrapper"
    mk_RecentFilterFunc :: C_RecentFilterFunc -> IO (FunPtr C_RecentFilterFunc)

{- |
The type of function that is used with custom filters,
see 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'.
-}
type 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' -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the file should be displayed -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `RecentFilterFunc`@.
noRecentFilterFunc :: Maybe RecentFilterFunc
noRecentFilterFunc = Nothing

{- |
The type of function that is used with custom filters,
see 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'.
-}
type RecentFilterFunc_WithClosures =
    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' -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the file should be displayed -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `RecentFilterFunc_WithClosures`@.
noRecentFilterFunc_WithClosures :: Maybe RecentFilterFunc_WithClosures
noRecentFilterFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_RecentFilterFunc :: RecentFilterFunc -> RecentFilterFunc_WithClosures
drop_closures_RecentFilterFunc _f filterInfo _ = _f filterInfo

-- | Wrap the callback into a `Closure`.
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 a `RecentFilterFunc` into a `C_RecentFilterFunc`.
wrap_RecentFilterFunc ::
    Maybe (Ptr (FunPtr C_RecentFilterFunc)) ->
    RecentFilterFunc_WithClosures ->
    C_RecentFilterFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_RcPropertyParser`.
foreign import ccall "wrapper"
    mk_RcPropertyParser :: C_RcPropertyParser -> IO (FunPtr C_RcPropertyParser)

{- |
/No description available in the introspection data./
-}
type RcPropertyParser =
    GParamSpec
    -> GLib.String.String
    -> GValue
    -> IO Bool

-- | A convenience synonym for @`Nothing` :: `Maybe` `RcPropertyParser`@.
noRcPropertyParser :: Maybe RcPropertyParser
noRcPropertyParser = Nothing

-- | Wrap the callback into a `Closure`.
genClosure_RcPropertyParser :: RcPropertyParser -> IO Closure
genClosure_RcPropertyParser cb = do
    let cb' = wrap_RcPropertyParser Nothing cb
    mk_RcPropertyParser cb' >>= newCClosure


-- | Wrap a `RcPropertyParser` into a `C_RcPropertyParser`.
wrap_RcPropertyParser ::
    Maybe (Ptr (FunPtr C_RcPropertyParser)) ->
    RcPropertyParser ->
    C_RcPropertyParser
wrap_RcPropertyParser funptrptr _cb pspec rcString propertyValue = do
    pspec' <- B.GParamSpec.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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_PrintSettingsFunc`.
foreign import ccall "wrapper"
    mk_PrintSettingsFunc :: C_PrintSettingsFunc -> IO (FunPtr C_PrintSettingsFunc)

{- |
/No description available in the introspection data./
-}
type PrintSettingsFunc =
    T.Text
    -> T.Text
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `PrintSettingsFunc`@.
noPrintSettingsFunc :: Maybe PrintSettingsFunc
noPrintSettingsFunc = Nothing

{- |
/No description available in the introspection data./
-}
type PrintSettingsFunc_WithClosures =
    T.Text
    -> T.Text
    -> Ptr ()
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `PrintSettingsFunc_WithClosures`@.
noPrintSettingsFunc_WithClosures :: Maybe PrintSettingsFunc_WithClosures
noPrintSettingsFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PrintSettingsFunc :: PrintSettingsFunc -> PrintSettingsFunc_WithClosures
drop_closures_PrintSettingsFunc _f key value _ = _f key value

-- | Wrap the callback into a `Closure`.
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 a `PrintSettingsFunc` into a `C_PrintSettingsFunc`.
wrap_PrintSettingsFunc ::
    Maybe (Ptr (FunPtr C_PrintSettingsFunc)) ->
    PrintSettingsFunc_WithClosures ->
    C_PrintSettingsFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_PageSetupDoneFunc`.
foreign import ccall "wrapper"
    mk_PageSetupDoneFunc :: C_PageSetupDoneFunc -> IO (FunPtr C_PageSetupDoneFunc)

{- |
The type of function that is passed to
'GI.Gtk.Functions.printRunPageSetupDialogAsync'.

This function will be called when the page setup dialog
is dismissed, and also serves as destroy notify for /@data@/.
-}
type PageSetupDoneFunc =
    Gtk.PageSetup.PageSetup
    {- ^ /@pageSetup@/: the 'GI.Gtk.Objects.PageSetup.PageSetup' that has been -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `PageSetupDoneFunc`@.
noPageSetupDoneFunc :: Maybe PageSetupDoneFunc
noPageSetupDoneFunc = Nothing

{- |
The type of function that is passed to
'GI.Gtk.Functions.printRunPageSetupDialogAsync'.

This function will be called when the page setup dialog
is dismissed, and also serves as destroy notify for /@data@/.
-}
type PageSetupDoneFunc_WithClosures =
    Gtk.PageSetup.PageSetup
    {- ^ /@pageSetup@/: the 'GI.Gtk.Objects.PageSetup.PageSetup' that has been -}
    -> Ptr ()
    {- ^ /@data@/: user data that has been passed to
    'GI.Gtk.Functions.printRunPageSetupDialogAsync' -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `PageSetupDoneFunc_WithClosures`@.
noPageSetupDoneFunc_WithClosures :: Maybe PageSetupDoneFunc_WithClosures
noPageSetupDoneFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PageSetupDoneFunc :: PageSetupDoneFunc -> PageSetupDoneFunc_WithClosures
drop_closures_PageSetupDoneFunc _f pageSetup _ = _f pageSetup

-- | Wrap the callback into a `Closure`.
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 a `PageSetupDoneFunc` into a `C_PageSetupDoneFunc`.
wrap_PageSetupDoneFunc ::
    Maybe (Ptr (FunPtr C_PageSetupDoneFunc)) ->
    PageSetupDoneFunc_WithClosures ->
    C_PageSetupDoneFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_ModuleInitFunc`.
foreign import ccall "wrapper"
    mk_ModuleInitFunc :: C_ModuleInitFunc -> IO (FunPtr C_ModuleInitFunc)

{- |
Each GTK+ module must have a function @/gtk_module_init()/@ with this prototype.
This function is called after loading the module.
-}
type ModuleInitFunc =
    Maybe [T.Text]
    {- ^ /@argv@/: GTK+ always passes 'Nothing' for this argument -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ModuleInitFunc`@.
noModuleInitFunc :: Maybe ModuleInitFunc
noModuleInitFunc = Nothing

-- | Wrap the callback into a `Closure`.
genClosure_ModuleInitFunc :: ModuleInitFunc -> IO Closure
genClosure_ModuleInitFunc cb = do
    let cb' = wrap_ModuleInitFunc Nothing cb
    mk_ModuleInitFunc cb' >>= newCClosure


-- | Wrap a `ModuleInitFunc` into a `C_ModuleInitFunc`.
wrap_ModuleInitFunc ::
    Maybe (Ptr (FunPtr C_ModuleInitFunc)) ->
    ModuleInitFunc ->
    C_ModuleInitFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_ModuleDisplayInitFunc`.
foreign import ccall "wrapper"
    mk_ModuleDisplayInitFunc :: C_ModuleDisplayInitFunc -> IO (FunPtr C_ModuleDisplayInitFunc)

{- |
A multihead-aware GTK+ module may have a @/gtk_module_display_init()/@ function
with this prototype. GTK+ calls this function for each opened display.

/Since: 2.2/
-}
type ModuleDisplayInitFunc =
    Gdk.Display.Display
    {- ^ /@display@/: an open 'GI.Gdk.Objects.Display.Display' -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ModuleDisplayInitFunc`@.
noModuleDisplayInitFunc :: Maybe ModuleDisplayInitFunc
noModuleDisplayInitFunc = Nothing

-- | Wrap the callback into a `Closure`.
genClosure_ModuleDisplayInitFunc :: ModuleDisplayInitFunc -> IO Closure
genClosure_ModuleDisplayInitFunc cb = do
    let cb' = wrap_ModuleDisplayInitFunc Nothing cb
    mk_ModuleDisplayInitFunc cb' >>= newCClosure


-- | Wrap a `ModuleDisplayInitFunc` into a `C_ModuleDisplayInitFunc`.
wrap_ModuleDisplayInitFunc ::
    Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc)) ->
    ModuleDisplayInitFunc ->
    C_ModuleDisplayInitFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'')

-- | Generate a function pointer callable from C code, from a `C_MenuPositionFunc`.
foreign import ccall "wrapper"
    mk_MenuPositionFunc :: C_MenuPositionFunc -> IO (FunPtr C_MenuPositionFunc)

{- |
A user function supplied when calling 'GI.Gtk.Objects.Menu.menuPopup' which
controls the positioning of the menu when it is displayed.  The
function sets the /@x@/ and /@y@/ parameters to the coordinates where the
menu is to be drawn.  To make the menu appear on a different
monitor than the mouse pointer, 'GI.Gtk.Objects.Menu.menuSetMonitor' must be
called.
-}
type MenuPositionFunc =
    Gtk.Menu.Menu
    {- ^ /@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. -}
    -> IO ((Int32, Int32, Bool))

-- | A convenience synonym for @`Nothing` :: `Maybe` `MenuPositionFunc`@.
noMenuPositionFunc :: Maybe MenuPositionFunc
noMenuPositionFunc = Nothing

{- |
A user function supplied when calling 'GI.Gtk.Objects.Menu.menuPopup' which
controls the positioning of the menu when it is displayed.  The
function sets the /@x@/ and /@y@/ parameters to the coordinates where the
menu is to be drawn.  To make the menu appear on a different
monitor than the mouse pointer, 'GI.Gtk.Objects.Menu.menuSetMonitor' must be
called.
-}
type MenuPositionFunc_WithClosures =
    Gtk.Menu.Menu
    {- ^ /@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. -}
    -> IO ((Int32, Int32, Bool))

-- | A convenience synonym for @`Nothing` :: `Maybe` `MenuPositionFunc_WithClosures`@.
noMenuPositionFunc_WithClosures :: Maybe MenuPositionFunc_WithClosures
noMenuPositionFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_MenuPositionFunc :: MenuPositionFunc -> MenuPositionFunc_WithClosures
drop_closures_MenuPositionFunc _f menu x y _ = _f menu x y

-- | Wrap the callback into a `Closure`.
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 a `MenuPositionFunc` into a `C_MenuPositionFunc`.
wrap_MenuPositionFunc ::
    Maybe (Ptr (FunPtr C_MenuPositionFunc)) ->
    MenuPositionFunc_WithClosures ->
    C_MenuPositionFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_MenuDetachFunc`.
foreign import ccall "wrapper"
    mk_MenuDetachFunc :: C_MenuDetachFunc -> IO (FunPtr C_MenuDetachFunc)

{- |
A user function supplied when calling 'GI.Gtk.Objects.Menu.menuAttachToWidget' which
will be called when the menu is later detached from the widget.
-}
type MenuDetachFunc =
    Gtk.Widget.Widget
    {- ^ /@attachWidget@/: the 'GI.Gtk.Objects.Widget.Widget' that the menu is being detached from. -}
    -> Gtk.Menu.Menu
    {- ^ /@menu@/: the 'GI.Gtk.Objects.Menu.Menu' being detached. -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `MenuDetachFunc`@.
noMenuDetachFunc :: Maybe MenuDetachFunc
noMenuDetachFunc = Nothing

-- | Wrap the callback into a `Closure`.
genClosure_MenuDetachFunc :: MenuDetachFunc -> IO Closure
genClosure_MenuDetachFunc cb = do
    let cb' = wrap_MenuDetachFunc Nothing cb
    mk_MenuDetachFunc cb' >>= newCClosure


-- | Wrap a `MenuDetachFunc` into a `C_MenuDetachFunc`.
wrap_MenuDetachFunc ::
    Maybe (Ptr (FunPtr C_MenuDetachFunc)) ->
    MenuDetachFunc ->
    C_MenuDetachFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_ListBoxUpdateHeaderFunc`.
foreign import ccall "wrapper"
    mk_ListBoxUpdateHeaderFunc :: C_ListBoxUpdateHeaderFunc -> IO (FunPtr C_ListBoxUpdateHeaderFunc)

{- |
Whenever /@row@/ changes or which row is before /@row@/ changes this
is called, which lets you update the header on /@row@/. You may
remove or set a new one via 'GI.Gtk.Objects.ListBoxRow.listBoxRowSetHeader' or
just change the state of the current header widget.

/Since: 3.10/
-}
type ListBoxUpdateHeaderFunc =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: the row to update -}
    -> Maybe Gtk.ListBoxRow.ListBoxRow
    {- ^ /@before@/: the row before /@row@/, or 'Nothing' if it is first -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxUpdateHeaderFunc`@.
noListBoxUpdateHeaderFunc :: Maybe ListBoxUpdateHeaderFunc
noListBoxUpdateHeaderFunc = Nothing

{- |
Whenever /@row@/ changes or which row is before /@row@/ changes this
is called, which lets you update the header on /@row@/. You may
remove or set a new one via 'GI.Gtk.Objects.ListBoxRow.listBoxRowSetHeader' or
just change the state of the current header widget.

/Since: 3.10/
-}
type ListBoxUpdateHeaderFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: the row to update -}
    -> Maybe Gtk.ListBoxRow.ListBoxRow
    {- ^ /@before@/: the row before /@row@/, or 'Nothing' if it is first -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxUpdateHeaderFunc_WithClosures`@.
noListBoxUpdateHeaderFunc_WithClosures :: Maybe ListBoxUpdateHeaderFunc_WithClosures
noListBoxUpdateHeaderFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ListBoxUpdateHeaderFunc :: ListBoxUpdateHeaderFunc -> ListBoxUpdateHeaderFunc_WithClosures
drop_closures_ListBoxUpdateHeaderFunc _f row before _ = _f row before

-- | Wrap the callback into a `Closure`.
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 a `ListBoxUpdateHeaderFunc` into a `C_ListBoxUpdateHeaderFunc`.
wrap_ListBoxUpdateHeaderFunc ::
    Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc)) ->
    ListBoxUpdateHeaderFunc_WithClosures ->
    C_ListBoxUpdateHeaderFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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

-- | Generate a function pointer callable from C code, from a `C_ListBoxSortFunc`.
foreign import ccall "wrapper"
    mk_ListBoxSortFunc :: C_ListBoxSortFunc -> IO (FunPtr C_ListBoxSortFunc)

{- |
Compare two rows to determine which should be first.

/Since: 3.10/
-}
type ListBoxSortFunc =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row1@/: the first row -}
    -> Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row2@/: the second row -}
    -> IO Int32
    {- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
    equal and > 0 otherwise -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxSortFunc`@.
noListBoxSortFunc :: Maybe ListBoxSortFunc
noListBoxSortFunc = Nothing

{- |
Compare two rows to determine which should be first.

/Since: 3.10/
-}
type ListBoxSortFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row1@/: the first row -}
    -> Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row2@/: the second row -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> IO Int32
    {- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
    equal and > 0 otherwise -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxSortFunc_WithClosures`@.
noListBoxSortFunc_WithClosures :: Maybe ListBoxSortFunc_WithClosures
noListBoxSortFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ListBoxSortFunc :: ListBoxSortFunc -> ListBoxSortFunc_WithClosures
drop_closures_ListBoxSortFunc _f row1 row2 _ = _f row1 row2

-- | Wrap the callback into a `Closure`.
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 a `ListBoxSortFunc` into a `C_ListBoxSortFunc`.
wrap_ListBoxSortFunc ::
    Maybe (Ptr (FunPtr C_ListBoxSortFunc)) ->
    ListBoxSortFunc_WithClosures ->
    C_ListBoxSortFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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 ()

-- | Generate a function pointer callable from C code, from a `C_ListBoxForeachFunc`.
foreign import ccall "wrapper"
    mk_ListBoxForeachFunc :: C_ListBoxForeachFunc -> IO (FunPtr C_ListBoxForeachFunc)

{- |
A function used by 'GI.Gtk.Objects.ListBox.listBoxSelectedForeach'.
It will be called on every selected child of the /@box@/.

/Since: 3.14/
-}
type ListBoxForeachFunc =
    Gtk.ListBox.ListBox
    {- ^ /@box@/: a 'GI.Gtk.Objects.ListBox.ListBox' -}
    -> Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: a 'GI.Gtk.Objects.ListBoxRow.ListBoxRow' -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxForeachFunc`@.
noListBoxForeachFunc :: Maybe ListBoxForeachFunc
noListBoxForeachFunc = Nothing

{- |
A function used by 'GI.Gtk.Objects.ListBox.listBoxSelectedForeach'.
It will be called on every selected child of the /@box@/.

/Since: 3.14/
-}
type ListBoxForeachFunc_WithClosures =
    Gtk.ListBox.ListBox
    {- ^ /@box@/: a 'GI.Gtk.Objects.ListBox.ListBox' -}
    -> Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: a 'GI.Gtk.Objects.ListBoxRow.ListBoxRow' -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxForeachFunc_WithClosures`@.
noListBoxForeachFunc_WithClosures :: Maybe ListBoxForeachFunc_WithClosures
noListBoxForeachFunc_WithClosures = Nothing

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ListBoxForeachFunc :: ListBoxForeachFunc -> ListBoxForeachFunc_WithClosures
drop_closures_ListBoxForeachFunc _f box row _ = _f box row

-- | Wrap the callback into a `Closure`.
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 a `ListBoxForeachFunc` into a `C_ListBoxForeachFunc`.
wrap_ListBoxForeachFunc ::
    Maybe (Ptr (FunPtr C_ListBoxForeachFunc)) ->
    ListBoxForeachFunc_WithClosures ->
    C_ListBoxForeachFunc
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 for the callback on the (unwrapped) C side.
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

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
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'

-- | Generate a function pointer callable from C code, from a `C_ListBoxFilterFunc`.
foreign import ccall "wrapper"
    mk_ListBoxFilterFunc :: C_ListBoxFilterFunc -> IO (FunPtr C_ListBoxFilterFunc)

{- |
Will be called whenever the row changes or is added and lets you control
if the row should be visible or not.

/Since: 3.10/
-}
type ListBoxFilterFunc =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: the row that may be filtered -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the row should be visible, 'False' otherwise -}

-- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxFilterFunc`@.
noListBoxFilterFunc :: Maybe ListBoxFilterFunc
noListBoxFilterFunc = Nothing

{- |
Will be called whenever the row changes or is added and lets you control
if the row should be visible or not.

/Since: 3.10/
-}
type ListBoxFilterFunc_WithClosures =
    Gtk.ListBoxRow.ListBoxRow
    {- ^ /@row@/: the row that may be filtered -}
    -> Ptr ()
    {- ^ /@userData@/: user data -}
    -> IO Bool
    {- ^ __Returns:__ 'True' if the row should be visible, 'False' otherwise -}