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

    /No description available in the introspection data./
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.NativeVolumeMonitor
        (

    -- * Exported types
        NativeVolumeMonitor(..)                 ,
        IsNativeVolumeMonitor                   ,
        toNativeVolumeMonitor                   ,
        noNativeVolumeMonitor                   ,

        ) 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.GObject.Objects.Object as GObject.Object
    import {-# SOURCE #-} qualified GI.Gio.Objects.VolumeMonitor as Gio.VolumeMonitor

    -- | Memory-managed wrapper type.
    newtype NativeVolumeMonitor = NativeVolumeMonitor (ManagedPtr NativeVolumeMonitor)
    foreign import ccall "g_native_volume_monitor_get_type"
        c_g_native_volume_monitor_get_type :: IO GType

    instance GObject NativeVolumeMonitor where
        gobjectType _ = c_g_native_volume_monitor_get_type

    -- | Type class for types which can be safely cast to `NativeVolumeMonitor`, for instance with `toNativeVolumeMonitor`.
    class GObject o => IsNativeVolumeMonitor o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError NativeVolumeMonitor a) =>
        IsNativeVolumeMonitor a
    #endif
    instance IsNativeVolumeMonitor NativeVolumeMonitor
    instance Gio.VolumeMonitor.IsVolumeMonitor NativeVolumeMonitor
    instance GObject.Object.IsObject NativeVolumeMonitor

    -- | Cast to `NativeVolumeMonitor`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
    toNativeVolumeMonitor :: (MonadIO m, IsNativeVolumeMonitor o) => o -> m NativeVolumeMonitor
    toNativeVolumeMonitor = liftIO . unsafeCastTo NativeVolumeMonitor

    -- | A convenience alias for `Nothing` :: `Maybe` `NativeVolumeMonitor`.
    noNativeVolumeMonitor :: Maybe NativeVolumeMonitor
    noNativeVolumeMonitor = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveNativeVolumeMonitorMethod (t :: Symbol) (o :: *) :: * where
        ResolveNativeVolumeMonitorMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveNativeVolumeMonitorMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveNativeVolumeMonitorMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveNativeVolumeMonitorMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveNativeVolumeMonitorMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveNativeVolumeMonitorMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveNativeVolumeMonitorMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveNativeVolumeMonitorMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveNativeVolumeMonitorMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveNativeVolumeMonitorMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveNativeVolumeMonitorMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveNativeVolumeMonitorMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveNativeVolumeMonitorMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveNativeVolumeMonitorMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveNativeVolumeMonitorMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveNativeVolumeMonitorMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveNativeVolumeMonitorMethod "getConnectedDrives" o = Gio.VolumeMonitor.VolumeMonitorGetConnectedDrivesMethodInfo
        ResolveNativeVolumeMonitorMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveNativeVolumeMonitorMethod "getMountForUuid" o = Gio.VolumeMonitor.VolumeMonitorGetMountForUuidMethodInfo
        ResolveNativeVolumeMonitorMethod "getMounts" o = Gio.VolumeMonitor.VolumeMonitorGetMountsMethodInfo
        ResolveNativeVolumeMonitorMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveNativeVolumeMonitorMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveNativeVolumeMonitorMethod "getVolumeForUuid" o = Gio.VolumeMonitor.VolumeMonitorGetVolumeForUuidMethodInfo
        ResolveNativeVolumeMonitorMethod "getVolumes" o = Gio.VolumeMonitor.VolumeMonitorGetVolumesMethodInfo
        ResolveNativeVolumeMonitorMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveNativeVolumeMonitorMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveNativeVolumeMonitorMethod l o = O.MethodResolutionFailed l o

    instance (info ~ ResolveNativeVolumeMonitorMethod t NativeVolumeMonitor, O.MethodInfo info NativeVolumeMonitor p) => O.IsLabelProxy t (NativeVolumeMonitor -> p) where
        fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

    #if MIN_VERSION_base(4,9,0)
    instance (info ~ ResolveNativeVolumeMonitorMethod t NativeVolumeMonitor, O.MethodInfo info NativeVolumeMonitor p) => O.IsLabel t (NativeVolumeMonitor -> 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

    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList NativeVolumeMonitor
    type instance O.AttributeList NativeVolumeMonitor = NativeVolumeMonitorAttributeList
    type NativeVolumeMonitorAttributeList = ('[ ] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    #endif

    #if ENABLE_OVERLOADING
    type instance O.SignalList NativeVolumeMonitor = NativeVolumeMonitorSignalList
    type NativeVolumeMonitorSignalList = ('[ '("driveChanged", Gio.VolumeMonitor.VolumeMonitorDriveChangedSignalInfo), '("driveConnected", Gio.VolumeMonitor.VolumeMonitorDriveConnectedSignalInfo), '("driveDisconnected", Gio.VolumeMonitor.VolumeMonitorDriveDisconnectedSignalInfo), '("driveEjectButton", Gio.VolumeMonitor.VolumeMonitorDriveEjectButtonSignalInfo), '("driveStopButton", Gio.VolumeMonitor.VolumeMonitorDriveStopButtonSignalInfo), '("mountAdded", Gio.VolumeMonitor.VolumeMonitorMountAddedSignalInfo), '("mountChanged", Gio.VolumeMonitor.VolumeMonitorMountChangedSignalInfo), '("mountPreUnmount", Gio.VolumeMonitor.VolumeMonitorMountPreUnmountSignalInfo), '("mountRemoved", Gio.VolumeMonitor.VolumeMonitorMountRemovedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("volumeAdded", Gio.VolumeMonitor.VolumeMonitorVolumeAddedSignalInfo), '("volumeChanged", Gio.VolumeMonitor.VolumeMonitorVolumeChangedSignalInfo), '("volumeRemoved", Gio.VolumeMonitor.VolumeMonitorVolumeRemovedSignalInfo)] :: [(Symbol, *)])

    #endif