#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))
module GI.Atk.Objects.Misc
    (
    Misc(..)                                ,
    IsMisc                                  ,
    toMisc                                  ,
    noMisc                                  ,
 
    miscGetInstance                         ,
#if ENABLE_OVERLOADING
    MiscThreadsEnterMethodInfo              ,
#endif
    miscThreadsEnter                        ,
#if ENABLE_OVERLOADING
    MiscThreadsLeaveMethodInfo              ,
#endif
    miscThreadsLeave                        ,
    ) 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.GClosure as B.GClosure
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.GI.Base.Properties as B.Properties
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 GHC.OverloadedLabels as OL
import qualified GI.GObject.Objects.Object as GObject.Object
newtype Misc = Misc (ManagedPtr Misc)
foreign import ccall "atk_misc_get_type"
    c_atk_misc_get_type :: IO GType
instance GObject Misc where
    gobjectType = c_atk_misc_get_type
class (GObject o, O.IsDescendantOf Misc o) => IsMisc o
instance (GObject o, O.IsDescendantOf Misc o) => IsMisc o
instance O.HasParentTypes Misc
type instance O.ParentTypes Misc = '[GObject.Object.Object]
toMisc :: (MonadIO m, IsMisc o) => o -> m Misc
toMisc = liftIO . unsafeCastTo Misc
noMisc :: Maybe Misc
noMisc = Nothing
#if ENABLE_OVERLOADING
type family ResolveMiscMethod (t :: Symbol) (o :: *) :: * where
    ResolveMiscMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveMiscMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveMiscMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveMiscMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveMiscMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveMiscMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveMiscMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveMiscMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveMiscMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveMiscMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveMiscMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveMiscMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveMiscMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveMiscMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveMiscMethod "threadsEnter" o = MiscThreadsEnterMethodInfo
    ResolveMiscMethod "threadsLeave" o = MiscThreadsLeaveMethodInfo
    ResolveMiscMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveMiscMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveMiscMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveMiscMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveMiscMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveMiscMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveMiscMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveMiscMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveMiscMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveMiscMethod t Misc, O.MethodInfo info Misc p) => OL.IsLabel t (Misc -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList Misc
type instance O.AttributeList Misc = MiscAttributeList
type MiscAttributeList = ('[ ] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList Misc = MiscSignalList
type MiscSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "atk_misc_threads_enter" atk_misc_threads_enter ::
    Ptr Misc ->                             
    IO ()
{-# DEPRECATED miscThreadsEnter ["Since 2.12."] #-}
miscThreadsEnter ::
    (B.CallStack.HasCallStack, MonadIO m, IsMisc a) =>
    a
    
    -> m ()
miscThreadsEnter misc = liftIO $ do
    misc' <- unsafeManagedPtrCastPtr misc
    atk_misc_threads_enter misc'
    touchManagedPtr misc
    return ()
#if ENABLE_OVERLOADING
data MiscThreadsEnterMethodInfo
instance (signature ~ (m ()), MonadIO m, IsMisc a) => O.MethodInfo MiscThreadsEnterMethodInfo a signature where
    overloadedMethod _ = miscThreadsEnter
#endif
foreign import ccall "atk_misc_threads_leave" atk_misc_threads_leave ::
    Ptr Misc ->                             
    IO ()
{-# DEPRECATED miscThreadsLeave ["Since 2.12."] #-}
miscThreadsLeave ::
    (B.CallStack.HasCallStack, MonadIO m, IsMisc a) =>
    a
    
    -> m ()
miscThreadsLeave misc = liftIO $ do
    misc' <- unsafeManagedPtrCastPtr misc
    atk_misc_threads_leave misc'
    touchManagedPtr misc
    return ()
#if ENABLE_OVERLOADING
data MiscThreadsLeaveMethodInfo
instance (signature ~ (m ()), MonadIO m, IsMisc a) => O.MethodInfo MiscThreadsLeaveMethodInfo a signature where
    overloadedMethod _ = miscThreadsLeave
#endif
foreign import ccall "atk_misc_get_instance" atk_misc_get_instance ::
    IO (Ptr Misc)
{-# DEPRECATED miscGetInstance ["Since 2.12."] #-}
miscGetInstance ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Misc
    
miscGetInstance  = liftIO $ do
    result <- atk_misc_get_instance
    checkUnexpectedReturnNULL "miscGetInstance" result
    result' <- (newObject Misc) result
    return result'
#if ENABLE_OVERLOADING
#endif