packages feed

gi-gobject-0.2.46.13: GI/GObject/Objects/Object.hs


{- |
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.GObject.Objects.Object
    ( 

-- * Exported types
    Object(..)                              ,
    ObjectK                                 ,
    toObject                                ,
    noObject                                ,


 -- * Methods
-- ** Unsupported methods
    ObjectInterfaceListPropertiesMethodInfo ,


-- ** objectBindProperty
    ObjectBindPropertyMethodInfo            ,
    objectBindProperty                      ,


-- ** objectBindPropertyFull
    ObjectBindPropertyFullMethodInfo        ,
    objectBindPropertyFull                  ,


-- ** objectCompatControl
    objectCompatControl                     ,


-- ** objectForceFloating
    ObjectForceFloatingMethodInfo           ,
    objectForceFloating                     ,


-- ** objectFreezeNotify
    ObjectFreezeNotifyMethodInfo            ,
    objectFreezeNotify                      ,


-- ** objectGetData
    ObjectGetDataMethodInfo                 ,
    objectGetData                           ,


-- ** objectGetProperty
    ObjectGetPropertyMethodInfo             ,
    objectGetProperty                       ,


-- ** objectGetQdata
    ObjectGetQdataMethodInfo                ,
    objectGetQdata                          ,


-- ** objectInterfaceFindProperty
    objectInterfaceFindProperty             ,


-- ** objectInterfaceInstallProperty
    objectInterfaceInstallProperty          ,


-- ** objectIsFloating
    ObjectIsFloatingMethodInfo              ,
    objectIsFloating                        ,


-- ** objectNew
    objectNew                               ,


-- ** objectNotify
    ObjectNotifyMethodInfo                  ,
    objectNotify                            ,


-- ** objectNotifyByPspec
    ObjectNotifyByPspecMethodInfo           ,
    objectNotifyByPspec                     ,


-- ** objectRef
    ObjectRefMethodInfo                     ,
    objectRef                               ,


-- ** objectRefSink
    ObjectRefSinkMethodInfo                 ,
    objectRefSink                           ,


-- ** objectReplaceData
    ObjectReplaceDataMethodInfo             ,
    objectReplaceData                       ,


-- ** objectReplaceQdata
    ObjectReplaceQdataMethodInfo            ,
    objectReplaceQdata                      ,


-- ** objectRunDispose
    ObjectRunDisposeMethodInfo              ,
    objectRunDispose                        ,


-- ** objectSetData
    ObjectSetDataMethodInfo                 ,
    objectSetData                           ,


-- ** objectSetProperty
    ObjectSetPropertyMethodInfo             ,
    objectSetProperty                       ,


-- ** objectStealData
    ObjectStealDataMethodInfo               ,
    objectStealData                         ,


-- ** objectStealQdata
    ObjectStealQdataMethodInfo              ,
    objectStealQdata                        ,


-- ** objectThawNotify
    ObjectThawNotifyMethodInfo              ,
    objectThawNotify                        ,


-- ** objectUnref
    ObjectUnrefMethodInfo                   ,
    objectUnref                             ,


-- ** objectWatchClosure
    ObjectWatchClosureMethodInfo            ,
    objectWatchClosure                      ,




 -- * Signals
-- ** Notify
    ObjectNotifyCallback                    ,
    ObjectNotifyCallbackC                   ,
    ObjectNotifySignalInfo                  ,
    afterObjectNotify                       ,
    mkObjectNotifyCallback                  ,
    noObjectNotifyCallback                  ,
    objectNotifyCallbackWrapper             ,
    objectNotifyClosure                     ,
    onObjectNotify                          ,




    ) 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.GObject.Types
import GI.GObject.Callbacks
import qualified GI.GLib as GLib

newtype Object = Object (ForeignPtr Object)
foreign import ccall "g_object_get_type"
    c_g_object_get_type :: IO GType

type instance ParentTypes Object = ObjectParentTypes
type ObjectParentTypes = '[]

instance GObject Object where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_object_get_type
    

class GObject o => ObjectK o
instance (GObject o, IsDescendantOf Object o) => ObjectK o

toObject :: ObjectK o => o -> IO Object
toObject = unsafeCastTo Object

noObject :: Maybe Object
noObject = Nothing

type family ResolveObjectMethod (t :: Symbol) (o :: *) :: * where
    ResolveObjectMethod "bindProperty" o = ObjectBindPropertyMethodInfo
    ResolveObjectMethod "bindPropertyFull" o = ObjectBindPropertyFullMethodInfo
    ResolveObjectMethod "forceFloating" o = ObjectForceFloatingMethodInfo
    ResolveObjectMethod "freezeNotify" o = ObjectFreezeNotifyMethodInfo
    ResolveObjectMethod "isFloating" o = ObjectIsFloatingMethodInfo
    ResolveObjectMethod "notify" o = ObjectNotifyMethodInfo
    ResolveObjectMethod "notifyByPspec" o = ObjectNotifyByPspecMethodInfo
    ResolveObjectMethod "ref" o = ObjectRefMethodInfo
    ResolveObjectMethod "refSink" o = ObjectRefSinkMethodInfo
    ResolveObjectMethod "replaceData" o = ObjectReplaceDataMethodInfo
    ResolveObjectMethod "replaceQdata" o = ObjectReplaceQdataMethodInfo
    ResolveObjectMethod "runDispose" o = ObjectRunDisposeMethodInfo
    ResolveObjectMethod "stealData" o = ObjectStealDataMethodInfo
    ResolveObjectMethod "stealQdata" o = ObjectStealQdataMethodInfo
    ResolveObjectMethod "thawNotify" o = ObjectThawNotifyMethodInfo
    ResolveObjectMethod "unref" o = ObjectUnrefMethodInfo
    ResolveObjectMethod "watchClosure" o = ObjectWatchClosureMethodInfo
    ResolveObjectMethod "getData" o = ObjectGetDataMethodInfo
    ResolveObjectMethod "getProperty" o = ObjectGetPropertyMethodInfo
    ResolveObjectMethod "getQdata" o = ObjectGetQdataMethodInfo
    ResolveObjectMethod "setData" o = ObjectSetDataMethodInfo
    ResolveObjectMethod "setProperty" o = ObjectSetPropertyMethodInfo
    ResolveObjectMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveObjectMethod t Object, MethodInfo info Object p) => IsLabelProxy t (Object -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveObjectMethod t Object, MethodInfo info Object p) => IsLabel t (Object -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif

-- signal Object::notify
type ObjectNotifyCallback =
    GParamSpec ->
    IO ()

noObjectNotifyCallback :: Maybe ObjectNotifyCallback
noObjectNotifyCallback = Nothing

type ObjectNotifyCallbackC =
    Ptr () ->                               -- object
    Ptr GParamSpec ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkObjectNotifyCallback :: ObjectNotifyCallbackC -> IO (FunPtr ObjectNotifyCallbackC)

objectNotifyClosure :: ObjectNotifyCallback -> IO Closure
objectNotifyClosure cb = newCClosure =<< mkObjectNotifyCallback wrapped
    where wrapped = objectNotifyCallbackWrapper cb

objectNotifyCallbackWrapper ::
    ObjectNotifyCallback ->
    Ptr () ->
    Ptr GParamSpec ->
    Ptr () ->
    IO ()
objectNotifyCallbackWrapper _cb _ pspec _ = do
    pspec' <- newGParamSpecFromPtr pspec
    _cb  pspec'

onObjectNotify :: (GObject a, MonadIO m) => a -> ObjectNotifyCallback -> m SignalHandlerId
onObjectNotify obj cb = liftIO $ connectObjectNotify obj cb SignalConnectBefore
afterObjectNotify :: (GObject a, MonadIO m) => a -> ObjectNotifyCallback -> m SignalHandlerId
afterObjectNotify obj cb = connectObjectNotify obj cb SignalConnectAfter

connectObjectNotify :: (GObject a, MonadIO m) =>
                       a -> ObjectNotifyCallback -> SignalConnectMode -> m SignalHandlerId
connectObjectNotify obj cb after = liftIO $ do
    cb' <- mkObjectNotifyCallback (objectNotifyCallbackWrapper cb)
    connectSignalFunPtr obj "notify" cb' after

type instance AttributeList Object = ObjectAttributeList
type ObjectAttributeList = ('[ ] :: [(Symbol, *)])

data ObjectNotifySignalInfo
instance SignalInfo ObjectNotifySignalInfo where
    type HaskellCallbackType ObjectNotifySignalInfo = ObjectNotifyCallback
    connectSignal _ = connectObjectNotify

type instance SignalList Object = ObjectSignalList
type ObjectSignalList = ('[ '("notify", ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Object::new
-- method type : Constructor
-- Args : [Arg {argCName = "object_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_parameters", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parameters", argType = TCArray False (-1) 1 (TInterface "GObject" "Parameter"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : [Arg {argCName = "n_parameters", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "g_object_newv" g_object_newv :: 
    CGType ->                               -- object_type : TBasicType TGType
    Word32 ->                               -- n_parameters : TBasicType TUInt32
    Ptr Parameter ->                        -- parameters : TCArray False (-1) 1 (TInterface "GObject" "Parameter")
    IO (Ptr Object)


objectNew ::
    (MonadIO m) =>
    GType                                   -- objectType
    -> [Parameter]                          -- parameters
    -> m Object                             -- result
objectNew objectType parameters = liftIO $ do
    let nParameters = fromIntegral $ length parameters
    let objectType' = gtypeToCGType objectType
    let parameters' = map unsafeManagedPtrGetPtr parameters
    parameters'' <- packBlockArray 32 parameters'
    result <- g_object_newv objectType' nParameters parameters''
    checkUnexpectedReturnNULL "g_object_newv" result
    result' <- (wrapObject Object) result
    mapM_ touchManagedPtr parameters
    freeMem parameters''
    return result'

-- method Object::bind_property
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "GObject" "BindingFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Binding"
-- throws : False
-- Skip return : False

foreign import ccall "g_object_bind_property" g_object_bind_property :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- source_property : TBasicType TUTF8
    Ptr Object ->                           -- target : TInterface "GObject" "Object"
    CString ->                              -- target_property : TBasicType TUTF8
    CUInt ->                                -- flags : TInterface "GObject" "BindingFlags"
    IO (Ptr Binding)


objectBindProperty ::
    (MonadIO m, ObjectK a, ObjectK b) =>
    a                                       -- _obj
    -> T.Text                               -- sourceProperty
    -> b                                    -- target
    -> T.Text                               -- targetProperty
    -> [BindingFlags]                       -- flags
    -> m Binding                            -- result
objectBindProperty _obj sourceProperty target targetProperty flags = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    sourceProperty' <- textToCString sourceProperty
    let target' = unsafeManagedPtrCastPtr target
    targetProperty' <- textToCString targetProperty
    let flags' = gflagsToWord flags
    result <- g_object_bind_property _obj' sourceProperty' target' targetProperty' flags'
    checkUnexpectedReturnNULL "g_object_bind_property" result
    result' <- (newObject Binding) result
    touchManagedPtr _obj
    touchManagedPtr target
    freeMem sourceProperty'
    freeMem targetProperty'
    return result'

data ObjectBindPropertyMethodInfo
instance (signature ~ (T.Text -> b -> T.Text -> [BindingFlags] -> m Binding), MonadIO m, ObjectK a, ObjectK b) => MethodInfo ObjectBindPropertyMethodInfo a signature where
    overloadedMethod _ = objectBindProperty

-- method Object::bind_property_full
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "source_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "GObject" "BindingFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "transform_to", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "transform_from", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Binding"
-- throws : False
-- Skip return : False

foreign import ccall "g_object_bind_property_with_closures" g_object_bind_property_with_closures :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- source_property : TBasicType TUTF8
    Ptr Object ->                           -- target : TInterface "GObject" "Object"
    CString ->                              -- target_property : TBasicType TUTF8
    CUInt ->                                -- flags : TInterface "GObject" "BindingFlags"
    Ptr Closure ->                          -- transform_to : TInterface "GObject" "Closure"
    Ptr Closure ->                          -- transform_from : TInterface "GObject" "Closure"
    IO (Ptr Binding)


objectBindPropertyFull ::
    (MonadIO m, ObjectK a, ObjectK b) =>
    a                                       -- _obj
    -> T.Text                               -- sourceProperty
    -> b                                    -- target
    -> T.Text                               -- targetProperty
    -> [BindingFlags]                       -- flags
    -> Closure                              -- transformTo
    -> Closure                              -- transformFrom
    -> m Binding                            -- result
objectBindPropertyFull _obj sourceProperty target targetProperty flags transformTo transformFrom = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    sourceProperty' <- textToCString sourceProperty
    let target' = unsafeManagedPtrCastPtr target
    targetProperty' <- textToCString targetProperty
    let flags' = gflagsToWord flags
    let transformTo' = unsafeManagedPtrGetPtr transformTo
    let transformFrom' = unsafeManagedPtrGetPtr transformFrom
    result <- g_object_bind_property_with_closures _obj' sourceProperty' target' targetProperty' flags' transformTo' transformFrom'
    checkUnexpectedReturnNULL "g_object_bind_property_with_closures" result
    result' <- (newObject Binding) result
    touchManagedPtr _obj
    touchManagedPtr target
    touchManagedPtr transformTo
    touchManagedPtr transformFrom
    freeMem sourceProperty'
    freeMem targetProperty'
    return result'

data ObjectBindPropertyFullMethodInfo
instance (signature ~ (T.Text -> b -> T.Text -> [BindingFlags] -> Closure -> Closure -> m Binding), MonadIO m, ObjectK a, ObjectK b) => MethodInfo ObjectBindPropertyFullMethodInfo a signature where
    overloadedMethod _ = objectBindPropertyFull

-- method Object::force_floating
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_force_floating" g_object_force_floating :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO ()


objectForceFloating ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
objectForceFloating _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_force_floating _obj'
    touchManagedPtr _obj
    return ()

data ObjectForceFloatingMethodInfo
instance (signature ~ (m ()), MonadIO m, ObjectK a) => MethodInfo ObjectForceFloatingMethodInfo a signature where
    overloadedMethod _ = objectForceFloating

-- method Object::freeze_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_freeze_notify" g_object_freeze_notify :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO ()


objectFreezeNotify ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
objectFreezeNotify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_freeze_notify _obj'
    touchManagedPtr _obj
    return ()

data ObjectFreezeNotifyMethodInfo
instance (signature ~ (m ()), MonadIO m, ObjectK a) => MethodInfo ObjectFreezeNotifyMethodInfo a signature where
    overloadedMethod _ = objectFreezeNotify

-- method Object::get_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_get_data" g_object_get_data :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- key : TBasicType TUTF8
    IO ()


objectGetData ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> m ()                                 -- result
objectGetData _obj key = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    g_object_get_data _obj' key'
    touchManagedPtr _obj
    freeMem key'
    return ()

data ObjectGetDataMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectGetDataMethodInfo a signature where
    overloadedMethod _ = objectGetData

-- method Object::get_property
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_get_property" g_object_get_property :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- property_name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO ()


objectGetProperty ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- propertyName
    -> GValue                               -- value
    -> m ()                                 -- result
objectGetProperty _obj propertyName value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    propertyName' <- textToCString propertyName
    let value' = unsafeManagedPtrGetPtr value
    g_object_get_property _obj' propertyName' value'
    touchManagedPtr _obj
    touchManagedPtr value
    freeMem propertyName'
    return ()

data ObjectGetPropertyMethodInfo
instance (signature ~ (T.Text -> GValue -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectGetPropertyMethodInfo a signature where
    overloadedMethod _ = objectGetProperty

-- method Object::get_qdata
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "quark", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_get_qdata" g_object_get_qdata :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    Word32 ->                               -- quark : TBasicType TUInt32
    IO ()


objectGetQdata ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> Word32                               -- quark
    -> m ()                                 -- result
objectGetQdata _obj quark = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_get_qdata _obj' quark
    touchManagedPtr _obj
    return ()

data ObjectGetQdataMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectGetQdataMethodInfo a signature where
    overloadedMethod _ = objectGetQdata

-- method Object::is_floating
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_object_is_floating" g_object_is_floating :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO CInt


objectIsFloating ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m Bool                               -- result
objectIsFloating _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_object_is_floating _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data ObjectIsFloatingMethodInfo
instance (signature ~ (m Bool), MonadIO m, ObjectK a) => MethodInfo ObjectIsFloatingMethodInfo a signature where
    overloadedMethod _ = objectIsFloating

-- method Object::notify
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_notify" g_object_notify :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- property_name : TBasicType TUTF8
    IO ()


objectNotify ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- propertyName
    -> m ()                                 -- result
objectNotify _obj propertyName = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    propertyName' <- textToCString propertyName
    g_object_notify _obj' propertyName'
    touchManagedPtr _obj
    freeMem propertyName'
    return ()

data ObjectNotifyMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectNotifyMethodInfo a signature where
    overloadedMethod _ = objectNotify

-- method Object::notify_by_pspec
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pspec", argType = TParamSpec, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_notify_by_pspec" g_object_notify_by_pspec :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    Ptr GParamSpec ->                       -- pspec : TParamSpec
    IO ()


objectNotifyByPspec ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> GParamSpec                           -- pspec
    -> m ()                                 -- result
objectNotifyByPspec _obj pspec = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let pspec' = unsafeManagedPtrGetPtr pspec
    g_object_notify_by_pspec _obj' pspec'
    touchManagedPtr _obj
    return ()

data ObjectNotifyByPspecMethodInfo
instance (signature ~ (GParamSpec -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectNotifyByPspecMethodInfo a signature where
    overloadedMethod _ = objectNotifyByPspec

-- method Object::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "g_object_ref" g_object_ref :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO (Ptr Object)


objectRef ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m Object                             -- result
objectRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_object_ref _obj'
    checkUnexpectedReturnNULL "g_object_ref" result
    result' <- (newObject Object) result
    touchManagedPtr _obj
    return result'

data ObjectRefMethodInfo
instance (signature ~ (m Object), MonadIO m, ObjectK a) => MethodInfo ObjectRefMethodInfo a signature where
    overloadedMethod _ = objectRef

-- method Object::ref_sink
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "g_object_ref_sink" g_object_ref_sink :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO (Ptr Object)


objectRefSink ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m Object                             -- result
objectRefSink _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_object_ref_sink _obj'
    checkUnexpectedReturnNULL "g_object_ref_sink" result
    result' <- (newObject Object) result
    touchManagedPtr _obj
    return result'

data ObjectRefSinkMethodInfo
instance (signature ~ (m Object), MonadIO m, ObjectK a) => MethodInfo ObjectRefSinkMethodInfo a signature where
    overloadedMethod _ = objectRefSink

-- method Object::replace_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "oldval", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "newval", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_object_replace_data" g_object_replace_data :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- key : TBasicType TUTF8
    Ptr () ->                               -- oldval : TBasicType TVoid
    Ptr () ->                               -- newval : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- destroy : TInterface "GLib" "DestroyNotify"
    FunPtr GLib.DestroyNotifyC ->           -- old_destroy : TInterface "GLib" "DestroyNotify"
    IO CInt


objectReplaceData ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Maybe (Ptr ())                       -- oldval
    -> Maybe (Ptr ())                       -- newval
    -> Maybe (GLib.DestroyNotify)           -- destroy
    -> Maybe (GLib.DestroyNotify)           -- oldDestroy
    -> m Bool                               -- result
objectReplaceData _obj key oldval newval destroy oldDestroy = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    maybeOldval <- case oldval of
        Nothing -> return nullPtr
        Just jOldval -> do
            return jOldval
    maybeNewval <- case newval of
        Nothing -> return nullPtr
        Just jNewval -> do
            return jNewval
    ptrdestroy <- callocMem :: IO (Ptr (FunPtr GLib.DestroyNotifyC))
    maybeDestroy <- case destroy of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jDestroy -> do
            jDestroy' <- GLib.mkDestroyNotify (GLib.destroyNotifyWrapper (Just ptrdestroy) jDestroy)
            poke ptrdestroy jDestroy'
            return jDestroy'
    ptroldDestroy <- callocMem :: IO (Ptr (FunPtr GLib.DestroyNotifyC))
    maybeOldDestroy <- case oldDestroy of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jOldDestroy -> do
            jOldDestroy' <- GLib.mkDestroyNotify (GLib.destroyNotifyWrapper (Just ptroldDestroy) jOldDestroy)
            poke ptroldDestroy jOldDestroy'
            return jOldDestroy'
    result <- g_object_replace_data _obj' key' maybeOldval maybeNewval maybeDestroy maybeOldDestroy
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem key'
    return result'

data ObjectReplaceDataMethodInfo
instance (signature ~ (T.Text -> Maybe (Ptr ()) -> Maybe (Ptr ()) -> Maybe (GLib.DestroyNotify) -> Maybe (GLib.DestroyNotify) -> m Bool), MonadIO m, ObjectK a) => MethodInfo ObjectReplaceDataMethodInfo a signature where
    overloadedMethod _ = objectReplaceData

-- method Object::replace_qdata
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "quark", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "oldval", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "newval", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "old_destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_object_replace_qdata" g_object_replace_qdata :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    Word32 ->                               -- quark : TBasicType TUInt32
    Ptr () ->                               -- oldval : TBasicType TVoid
    Ptr () ->                               -- newval : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- destroy : TInterface "GLib" "DestroyNotify"
    FunPtr GLib.DestroyNotifyC ->           -- old_destroy : TInterface "GLib" "DestroyNotify"
    IO CInt


objectReplaceQdata ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> Word32                               -- quark
    -> Maybe (Ptr ())                       -- oldval
    -> Maybe (Ptr ())                       -- newval
    -> Maybe (GLib.DestroyNotify)           -- destroy
    -> Maybe (GLib.DestroyNotify)           -- oldDestroy
    -> m Bool                               -- result
objectReplaceQdata _obj quark oldval newval destroy oldDestroy = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeOldval <- case oldval of
        Nothing -> return nullPtr
        Just jOldval -> do
            return jOldval
    maybeNewval <- case newval of
        Nothing -> return nullPtr
        Just jNewval -> do
            return jNewval
    ptrdestroy <- callocMem :: IO (Ptr (FunPtr GLib.DestroyNotifyC))
    maybeDestroy <- case destroy of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jDestroy -> do
            jDestroy' <- GLib.mkDestroyNotify (GLib.destroyNotifyWrapper (Just ptrdestroy) jDestroy)
            poke ptrdestroy jDestroy'
            return jDestroy'
    ptroldDestroy <- callocMem :: IO (Ptr (FunPtr GLib.DestroyNotifyC))
    maybeOldDestroy <- case oldDestroy of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jOldDestroy -> do
            jOldDestroy' <- GLib.mkDestroyNotify (GLib.destroyNotifyWrapper (Just ptroldDestroy) jOldDestroy)
            poke ptroldDestroy jOldDestroy'
            return jOldDestroy'
    result <- g_object_replace_qdata _obj' quark maybeOldval maybeNewval maybeDestroy maybeOldDestroy
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data ObjectReplaceQdataMethodInfo
instance (signature ~ (Word32 -> Maybe (Ptr ()) -> Maybe (Ptr ()) -> Maybe (GLib.DestroyNotify) -> Maybe (GLib.DestroyNotify) -> m Bool), MonadIO m, ObjectK a) => MethodInfo ObjectReplaceQdataMethodInfo a signature where
    overloadedMethod _ = objectReplaceQdata

-- method Object::run_dispose
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_run_dispose" g_object_run_dispose :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO ()


objectRunDispose ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
objectRunDispose _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_run_dispose _obj'
    touchManagedPtr _obj
    return ()

data ObjectRunDisposeMethodInfo
instance (signature ~ (m ()), MonadIO m, ObjectK a) => MethodInfo ObjectRunDisposeMethodInfo a signature where
    overloadedMethod _ = objectRunDispose

-- method Object::set_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_set_data" g_object_set_data :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- key : TBasicType TUTF8
    Ptr () ->                               -- data : TBasicType TVoid
    IO ()


objectSetData ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> Ptr ()                               -- data_
    -> m ()                                 -- result
objectSetData _obj key data_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    g_object_set_data _obj' key' data_
    touchManagedPtr _obj
    freeMem key'
    return ()

data ObjectSetDataMethodInfo
instance (signature ~ (T.Text -> Ptr () -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectSetDataMethodInfo a signature where
    overloadedMethod _ = objectSetData

-- method Object::set_property
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_set_property" g_object_set_property :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- property_name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO ()


objectSetProperty ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- propertyName
    -> GValue                               -- value
    -> m ()                                 -- result
objectSetProperty _obj propertyName value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    propertyName' <- textToCString propertyName
    let value' = unsafeManagedPtrGetPtr value
    g_object_set_property _obj' propertyName' value'
    touchManagedPtr _obj
    touchManagedPtr value
    freeMem propertyName'
    return ()

data ObjectSetPropertyMethodInfo
instance (signature ~ (T.Text -> GValue -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectSetPropertyMethodInfo a signature where
    overloadedMethod _ = objectSetProperty

-- method Object::steal_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_steal_data" g_object_steal_data :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    CString ->                              -- key : TBasicType TUTF8
    IO ()


objectStealData ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> T.Text                               -- key
    -> m ()                                 -- result
objectStealData _obj key = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    key' <- textToCString key
    g_object_steal_data _obj' key'
    touchManagedPtr _obj
    freeMem key'
    return ()

data ObjectStealDataMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectStealDataMethodInfo a signature where
    overloadedMethod _ = objectStealData

-- method Object::steal_qdata
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "quark", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_steal_qdata" g_object_steal_qdata :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    Word32 ->                               -- quark : TBasicType TUInt32
    IO ()


objectStealQdata ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> Word32                               -- quark
    -> m ()                                 -- result
objectStealQdata _obj quark = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_steal_qdata _obj' quark
    touchManagedPtr _obj
    return ()

data ObjectStealQdataMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectStealQdataMethodInfo a signature where
    overloadedMethod _ = objectStealQdata

-- method Object::thaw_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_thaw_notify" g_object_thaw_notify :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO ()


objectThawNotify ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
objectThawNotify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_thaw_notify _obj'
    touchManagedPtr _obj
    return ()

data ObjectThawNotifyMethodInfo
instance (signature ~ (m ()), MonadIO m, ObjectK a) => MethodInfo ObjectThawNotifyMethodInfo a signature where
    overloadedMethod _ = objectThawNotify

-- method Object::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_unref" g_object_unref :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    IO ()


objectUnref ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
objectUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_object_unref _obj'
    touchManagedPtr _obj
    return ()

data ObjectUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m, ObjectK a) => MethodInfo ObjectUnrefMethodInfo a signature where
    overloadedMethod _ = objectUnref

-- method Object::watch_closure
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_watch_closure" g_object_watch_closure :: 
    Ptr Object ->                           -- _obj : TInterface "GObject" "Object"
    Ptr Closure ->                          -- closure : TInterface "GObject" "Closure"
    IO ()


objectWatchClosure ::
    (MonadIO m, ObjectK a) =>
    a                                       -- _obj
    -> Closure                              -- closure
    -> m ()                                 -- result
objectWatchClosure _obj closure = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let closure' = unsafeManagedPtrGetPtr closure
    g_object_watch_closure _obj' closure'
    touchManagedPtr _obj
    touchManagedPtr closure
    return ()

data ObjectWatchClosureMethodInfo
instance (signature ~ (Closure -> m ()), MonadIO m, ObjectK a) => MethodInfo ObjectWatchClosureMethodInfo a signature where
    overloadedMethod _ = objectWatchClosure

-- method Object::compat_control
-- method type : MemberFunction
-- Args : [Arg {argCName = "what", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_object_compat_control" g_object_compat_control :: 
    Word64 ->                               -- what : TBasicType TUInt64
    Ptr () ->                               -- data : TBasicType TVoid
    IO Word64


objectCompatControl ::
    (MonadIO m) =>
    Word64                                  -- what
    -> Ptr ()                               -- data_
    -> m Word64                             -- result
objectCompatControl what data_ = liftIO $ do
    result <- g_object_compat_control what data_
    return result

-- method Object::interface_find_property
-- method type : MemberFunction
-- Args : [Arg {argCName = "g_iface", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TParamSpec
-- throws : False
-- Skip return : False

foreign import ccall "g_object_interface_find_property" g_object_interface_find_property :: 
    Ptr () ->                               -- g_iface : TBasicType TVoid
    CString ->                              -- property_name : TBasicType TUTF8
    IO (Ptr GParamSpec)


objectInterfaceFindProperty ::
    (MonadIO m) =>
    Ptr ()                                  -- gIface
    -> T.Text                               -- propertyName
    -> m GParamSpec                         -- result
objectInterfaceFindProperty gIface propertyName = liftIO $ do
    propertyName' <- textToCString propertyName
    result <- g_object_interface_find_property gIface propertyName'
    checkUnexpectedReturnNULL "g_object_interface_find_property" result
    result' <- newGParamSpecFromPtr result
    freeMem propertyName'
    return result'

-- method Object::interface_install_property
-- method type : MemberFunction
-- Args : [Arg {argCName = "g_iface", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pspec", argType = TParamSpec, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_object_interface_install_property" g_object_interface_install_property :: 
    Ptr () ->                               -- g_iface : TBasicType TVoid
    Ptr GParamSpec ->                       -- pspec : TParamSpec
    IO ()


objectInterfaceInstallProperty ::
    (MonadIO m) =>
    Ptr ()                                  -- gIface
    -> GParamSpec                           -- pspec
    -> m ()                                 -- result
objectInterfaceInstallProperty gIface pspec = liftIO $ do
    let pspec' = unsafeManagedPtrGetPtr pspec
    g_object_interface_install_property gIface pspec'
    return ()

-- XXX Could not generate method Object::interface_list_properties
-- Error was : Not implemented: "unpackCArray : Don't know how to unpack C Array of type TParamSpec"
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data ObjectInterfaceListPropertiesMethodInfo
instance (p ~ (), o ~ MethodResolutionFailed "interfaceListProperties" Object) => MethodInfo ObjectInterfaceListPropertiesMethodInfo o p where
    overloadedMethod _ = undefined