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

module GI.Gtk.Objects.CellAreaContext
    ( 

-- * Exported types
    CellAreaContext(..)                     ,
    CellAreaContextK                        ,
    toCellAreaContext                       ,
    noCellAreaContext                       ,


 -- * Methods
-- ** cellAreaContextAllocate
    cellAreaContextAllocate                 ,


-- ** cellAreaContextGetAllocation
    cellAreaContextGetAllocation            ,


-- ** cellAreaContextGetArea
    cellAreaContextGetArea                  ,


-- ** cellAreaContextGetPreferredHeight
    cellAreaContextGetPreferredHeight       ,


-- ** cellAreaContextGetPreferredHeightForWidth
    cellAreaContextGetPreferredHeightForWidth,


-- ** cellAreaContextGetPreferredWidth
    cellAreaContextGetPreferredWidth        ,


-- ** cellAreaContextGetPreferredWidthForHeight
    cellAreaContextGetPreferredWidthForHeight,


-- ** cellAreaContextPushPreferredHeight
    cellAreaContextPushPreferredHeight      ,


-- ** cellAreaContextPushPreferredWidth
    cellAreaContextPushPreferredWidth       ,


-- ** cellAreaContextReset
    cellAreaContextReset                    ,




 -- * Properties
-- ** Area
    CellAreaContextAreaPropertyInfo         ,
    constructCellAreaContextArea            ,
    getCellAreaContextArea                  ,


-- ** MinimumHeight
    CellAreaContextMinimumHeightPropertyInfo,
    getCellAreaContextMinimumHeight         ,


-- ** MinimumWidth
    CellAreaContextMinimumWidthPropertyInfo ,
    getCellAreaContextMinimumWidth          ,


-- ** NaturalHeight
    CellAreaContextNaturalHeightPropertyInfo,
    getCellAreaContextNaturalHeight         ,


-- ** NaturalWidth
    CellAreaContextNaturalWidthPropertyInfo ,
    getCellAreaContextNaturalWidth          ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.GObject as GObject

newtype CellAreaContext = CellAreaContext (ForeignPtr CellAreaContext)
foreign import ccall "gtk_cell_area_context_get_type"
    c_gtk_cell_area_context_get_type :: IO GType

type instance ParentTypes CellAreaContext = CellAreaContextParentTypes
type CellAreaContextParentTypes = '[GObject.Object]

instance GObject CellAreaContext where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gtk_cell_area_context_get_type
    

class GObject o => CellAreaContextK o
instance (GObject o, IsDescendantOf CellAreaContext o) => CellAreaContextK o

toCellAreaContext :: CellAreaContextK o => o -> IO CellAreaContext
toCellAreaContext = unsafeCastTo CellAreaContext

noCellAreaContext :: Maybe CellAreaContext
noCellAreaContext = Nothing

-- VVV Prop "area"
   -- Type: TInterface "Gtk" "CellArea"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]

getCellAreaContextArea :: (MonadIO m, CellAreaContextK o) => o -> m CellArea
getCellAreaContextArea obj = liftIO $ getObjectPropertyObject obj "area" CellArea

constructCellAreaContextArea :: (CellAreaK a) => a -> IO ([Char], GValue)
constructCellAreaContextArea val = constructObjectPropertyObject "area" val

data CellAreaContextAreaPropertyInfo
instance AttrInfo CellAreaContextAreaPropertyInfo where
    type AttrAllowedOps CellAreaContextAreaPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint CellAreaContextAreaPropertyInfo = CellAreaK
    type AttrBaseTypeConstraint CellAreaContextAreaPropertyInfo = CellAreaContextK
    type AttrGetType CellAreaContextAreaPropertyInfo = CellArea
    type AttrLabel CellAreaContextAreaPropertyInfo = "CellAreaContext::area"
    attrGet _ = getCellAreaContextArea
    attrSet _ = undefined
    attrConstruct _ = constructCellAreaContextArea

-- VVV Prop "minimum-height"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getCellAreaContextMinimumHeight :: (MonadIO m, CellAreaContextK o) => o -> m Int32
getCellAreaContextMinimumHeight obj = liftIO $ getObjectPropertyCInt obj "minimum-height"

data CellAreaContextMinimumHeightPropertyInfo
instance AttrInfo CellAreaContextMinimumHeightPropertyInfo where
    type AttrAllowedOps CellAreaContextMinimumHeightPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint CellAreaContextMinimumHeightPropertyInfo = (~) ()
    type AttrBaseTypeConstraint CellAreaContextMinimumHeightPropertyInfo = CellAreaContextK
    type AttrGetType CellAreaContextMinimumHeightPropertyInfo = Int32
    type AttrLabel CellAreaContextMinimumHeightPropertyInfo = "CellAreaContext::minimum-height"
    attrGet _ = getCellAreaContextMinimumHeight
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "minimum-width"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getCellAreaContextMinimumWidth :: (MonadIO m, CellAreaContextK o) => o -> m Int32
getCellAreaContextMinimumWidth obj = liftIO $ getObjectPropertyCInt obj "minimum-width"

data CellAreaContextMinimumWidthPropertyInfo
instance AttrInfo CellAreaContextMinimumWidthPropertyInfo where
    type AttrAllowedOps CellAreaContextMinimumWidthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint CellAreaContextMinimumWidthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint CellAreaContextMinimumWidthPropertyInfo = CellAreaContextK
    type AttrGetType CellAreaContextMinimumWidthPropertyInfo = Int32
    type AttrLabel CellAreaContextMinimumWidthPropertyInfo = "CellAreaContext::minimum-width"
    attrGet _ = getCellAreaContextMinimumWidth
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "natural-height"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getCellAreaContextNaturalHeight :: (MonadIO m, CellAreaContextK o) => o -> m Int32
getCellAreaContextNaturalHeight obj = liftIO $ getObjectPropertyCInt obj "natural-height"

data CellAreaContextNaturalHeightPropertyInfo
instance AttrInfo CellAreaContextNaturalHeightPropertyInfo where
    type AttrAllowedOps CellAreaContextNaturalHeightPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint CellAreaContextNaturalHeightPropertyInfo = (~) ()
    type AttrBaseTypeConstraint CellAreaContextNaturalHeightPropertyInfo = CellAreaContextK
    type AttrGetType CellAreaContextNaturalHeightPropertyInfo = Int32
    type AttrLabel CellAreaContextNaturalHeightPropertyInfo = "CellAreaContext::natural-height"
    attrGet _ = getCellAreaContextNaturalHeight
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "natural-width"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getCellAreaContextNaturalWidth :: (MonadIO m, CellAreaContextK o) => o -> m Int32
getCellAreaContextNaturalWidth obj = liftIO $ getObjectPropertyCInt obj "natural-width"

data CellAreaContextNaturalWidthPropertyInfo
instance AttrInfo CellAreaContextNaturalWidthPropertyInfo where
    type AttrAllowedOps CellAreaContextNaturalWidthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint CellAreaContextNaturalWidthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint CellAreaContextNaturalWidthPropertyInfo = CellAreaContextK
    type AttrGetType CellAreaContextNaturalWidthPropertyInfo = Int32
    type AttrLabel CellAreaContextNaturalWidthPropertyInfo = "CellAreaContext::natural-width"
    attrGet _ = getCellAreaContextNaturalWidth
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList CellAreaContext = CellAreaContextAttributeList
type CellAreaContextAttributeList = ('[ '("area", CellAreaContextAreaPropertyInfo), '("minimum-height", CellAreaContextMinimumHeightPropertyInfo), '("minimum-width", CellAreaContextMinimumWidthPropertyInfo), '("natural-height", CellAreaContextNaturalHeightPropertyInfo), '("natural-width", CellAreaContextNaturalWidthPropertyInfo)] :: [(Symbol, *)])

type instance SignalList CellAreaContext = CellAreaContextSignalList
type CellAreaContextSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method CellAreaContext::allocate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_allocate" gtk_cell_area_context_allocate :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


cellAreaContextAllocate ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
cellAreaContextAllocate _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_cell_area_context_allocate _obj' width height
    touchManagedPtr _obj
    return ()

-- method CellAreaContext::get_allocation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_allocation" gtk_cell_area_context_get_allocation :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Ptr Int32 ->                            -- width : TBasicType TInt32
    Ptr Int32 ->                            -- height : TBasicType TInt32
    IO ()


cellAreaContextGetAllocation ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
cellAreaContextGetAllocation _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_cell_area_context_get_allocation _obj' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem width
    freeMem height
    return (width', height')

-- method CellAreaContext::get_area
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "CellArea"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_area" gtk_cell_area_context_get_area :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    IO (Ptr CellArea)


cellAreaContextGetArea ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    m CellArea
cellAreaContextGetArea _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_cell_area_context_get_area _obj'
    checkUnexpectedReturnNULL "gtk_cell_area_context_get_area" result
    result' <- (newObject CellArea) result
    touchManagedPtr _obj
    return result'

-- method CellAreaContext::get_preferred_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_preferred_height" gtk_cell_area_context_get_preferred_height :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Ptr Int32 ->                            -- minimum_height : TBasicType TInt32
    Ptr Int32 ->                            -- natural_height : TBasicType TInt32
    IO ()


cellAreaContextGetPreferredHeight ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
cellAreaContextGetPreferredHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_height <- allocMem :: IO (Ptr Int32)
    natural_height <- allocMem :: IO (Ptr Int32)
    gtk_cell_area_context_get_preferred_height _obj' minimum_height natural_height
    minimum_height' <- peek minimum_height
    natural_height' <- peek natural_height
    touchManagedPtr _obj
    freeMem minimum_height
    freeMem natural_height
    return (minimum_height', natural_height')

-- method CellAreaContext::get_preferred_height_for_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_preferred_height_for_width" gtk_cell_area_context_get_preferred_height_for_width :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Int32 ->                                -- width : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_height : TBasicType TInt32
    Ptr Int32 ->                            -- natural_height : TBasicType TInt32
    IO ()


cellAreaContextGetPreferredHeightForWidth ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    m (Int32,Int32)
cellAreaContextGetPreferredHeightForWidth _obj width = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_height <- allocMem :: IO (Ptr Int32)
    natural_height <- allocMem :: IO (Ptr Int32)
    gtk_cell_area_context_get_preferred_height_for_width _obj' width minimum_height natural_height
    minimum_height' <- peek minimum_height
    natural_height' <- peek natural_height
    touchManagedPtr _obj
    freeMem minimum_height
    freeMem natural_height
    return (minimum_height', natural_height')

-- method CellAreaContext::get_preferred_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_preferred_width" gtk_cell_area_context_get_preferred_width :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Ptr Int32 ->                            -- minimum_width : TBasicType TInt32
    Ptr Int32 ->                            -- natural_width : TBasicType TInt32
    IO ()


cellAreaContextGetPreferredWidth ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
cellAreaContextGetPreferredWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_width <- allocMem :: IO (Ptr Int32)
    natural_width <- allocMem :: IO (Ptr Int32)
    gtk_cell_area_context_get_preferred_width _obj' minimum_width natural_width
    minimum_width' <- peek minimum_width
    natural_width' <- peek natural_width
    touchManagedPtr _obj
    freeMem minimum_width
    freeMem natural_width
    return (minimum_width', natural_width')

-- method CellAreaContext::get_preferred_width_for_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_get_preferred_width_for_height" gtk_cell_area_context_get_preferred_width_for_height :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Int32 ->                                -- height : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_width : TBasicType TInt32
    Ptr Int32 ->                            -- natural_width : TBasicType TInt32
    IO ()


cellAreaContextGetPreferredWidthForHeight ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- height
    m (Int32,Int32)
cellAreaContextGetPreferredWidthForHeight _obj height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_width <- allocMem :: IO (Ptr Int32)
    natural_width <- allocMem :: IO (Ptr Int32)
    gtk_cell_area_context_get_preferred_width_for_height _obj' height minimum_width natural_width
    minimum_width' <- peek minimum_width
    natural_width' <- peek natural_width
    touchManagedPtr _obj
    freeMem minimum_width
    freeMem natural_width
    return (minimum_width', natural_width')

-- method CellAreaContext::push_preferred_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_push_preferred_height" gtk_cell_area_context_push_preferred_height :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Int32 ->                                -- minimum_height : TBasicType TInt32
    Int32 ->                                -- natural_height : TBasicType TInt32
    IO ()


cellAreaContextPushPreferredHeight ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- minimum_height
    Int32 ->                                -- natural_height
    m ()
cellAreaContextPushPreferredHeight _obj minimum_height natural_height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_cell_area_context_push_preferred_height _obj' minimum_height natural_height
    touchManagedPtr _obj
    return ()

-- method CellAreaContext::push_preferred_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_push_preferred_width" gtk_cell_area_context_push_preferred_width :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    Int32 ->                                -- minimum_width : TBasicType TInt32
    Int32 ->                                -- natural_width : TBasicType TInt32
    IO ()


cellAreaContextPushPreferredWidth ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- minimum_width
    Int32 ->                                -- natural_width
    m ()
cellAreaContextPushPreferredWidth _obj minimum_width natural_width = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_cell_area_context_push_preferred_width _obj' minimum_width natural_width
    touchManagedPtr _obj
    return ()

-- method CellAreaContext::reset
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "CellAreaContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_cell_area_context_reset" gtk_cell_area_context_reset :: 
    Ptr CellAreaContext ->                  -- _obj : TInterface "Gtk" "CellAreaContext"
    IO ()


cellAreaContextReset ::
    (MonadIO m, CellAreaContextK a) =>
    a ->                                    -- _obj
    m ()
cellAreaContextReset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_cell_area_context_reset _obj'
    touchManagedPtr _obj
    return ()