    -- GENERATED by C->Haskell Compiler, version 0.13.5 (gtk2hs branch) "Bin IO", 13 Nov 2004 (Haskell)
    -- Edit the ORIGNAL .chs file instead!

    {-# LINE 1 "./System/GIO/Types.chs" #-}
    {-# OPTIONS_HADDOCK hide #-}
    -- -*-haskell-*-
    -- -------------------- automatically generated file - do not edit ----------
    --  Object hierarchy for the GIMP Toolkit (GTK) Binding for Haskell
    --
    --  Author : Axel Simon
    --
    --  Copyright (C) 2001-2005 Axel Simon
    --
    --  This library is free software; you can redistribute it and/or
    --  modify it under the terms of the GNU Lesser General Public
    --  License as published by the Free Software Foundation; either
    --  version 2.1 of the License, or (at your option) any later version.
    --
    --  This library is distributed in the hope that it will be useful,
    --  but WITHOUT ANY WARRANTY; without even the implied warranty of
    --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    --  Lesser General Public License for more details.
    --
    -- #hide

    -- |
    -- Maintainer  : gtk2hs-users@lists.sourceforge.net
    -- Stability   : provisional
    -- Portability : portable (depends on GHC)
    --
    -- This file reflects the Gtk+ object hierarchy in terms of Haskell classes.
    --
    -- Note: the mk... functions were originally meant to simply be an alias
    -- for the constructor. However, in order to communicate the destructor
    -- of an object to objectNew, the mk... functions are now a tuple containing
    -- Haskell constructor and the destructor function pointer. This hack avoids
    -- changing all modules that simply pass mk... to objectNew.
    --
    module System.GIO.Types (

      OutputStream(OutputStream), OutputStreamClass,
      toOutputStream,
      mkOutputStream, unOutputStream,
      castToOutputStream, gTypeOutputStream,
      FilterOutputStream(FilterOutputStream), FilterOutputStreamClass,
      toFilterOutputStream,
      mkFilterOutputStream, unFilterOutputStream,
      castToFilterOutputStream, gTypeFilterOutputStream,
      DataOutputStream(DataOutputStream), DataOutputStreamClass,
      toDataOutputStream,
      mkDataOutputStream, unDataOutputStream,
      castToDataOutputStream, gTypeDataOutputStream,
      BufferedOutputStream(BufferedOutputStream), BufferedOutputStreamClass,
      toBufferedOutputStream,
      mkBufferedOutputStream, unBufferedOutputStream,
      castToBufferedOutputStream, gTypeBufferedOutputStream,
      FileOutputStream(FileOutputStream), FileOutputStreamClass,
      toFileOutputStream,
      mkFileOutputStream, unFileOutputStream,
      castToFileOutputStream, gTypeFileOutputStream,
      MemoryOutputStream(MemoryOutputStream), MemoryOutputStreamClass,
      toMemoryOutputStream,
      mkMemoryOutputStream, unMemoryOutputStream,
      castToMemoryOutputStream, gTypeMemoryOutputStream,
      InputStream(InputStream), InputStreamClass,
      toInputStream,
      mkInputStream, unInputStream,
      castToInputStream, gTypeInputStream,
      MemoryInputStream(MemoryInputStream), MemoryInputStreamClass,
      toMemoryInputStream,
      mkMemoryInputStream, unMemoryInputStream,
      castToMemoryInputStream, gTypeMemoryInputStream,
      FilterInputStream(FilterInputStream), FilterInputStreamClass,
      toFilterInputStream,
      mkFilterInputStream, unFilterInputStream,
      castToFilterInputStream, gTypeFilterInputStream,
      BufferedInputStream(BufferedInputStream), BufferedInputStreamClass,
      toBufferedInputStream,
      mkBufferedInputStream, unBufferedInputStream,
      castToBufferedInputStream, gTypeBufferedInputStream,
      DataInputStream(DataInputStream), DataInputStreamClass,
      toDataInputStream,
      mkDataInputStream, unDataInputStream,
      castToDataInputStream, gTypeDataInputStream,
      FileInputStream(FileInputStream), FileInputStreamClass,
      toFileInputStream,
      mkFileInputStream, unFileInputStream,
      castToFileInputStream, gTypeFileInputStream,
      FileMonitor(FileMonitor), FileMonitorClass,
      toFileMonitor,
      mkFileMonitor, unFileMonitor,
      castToFileMonitor, gTypeFileMonitor,
      Vfs(Vfs), VfsClass,
      toVfs,
      mkVfs, unVfs,
      castToVfs, gTypeVfs,
      MountOperation(MountOperation), MountOperationClass,
      toMountOperation,
      mkMountOperation, unMountOperation,
      castToMountOperation, gTypeMountOperation,
      ThemedIcon(ThemedIcon), ThemedIconClass,
      toThemedIcon,
      mkThemedIcon, unThemedIcon,
      castToThemedIcon, gTypeThemedIcon,
      Emblem(Emblem), EmblemClass,
      toEmblem,
      mkEmblem, unEmblem,
      castToEmblem, gTypeEmblem,
      EmblemedIcon(EmblemedIcon), EmblemedIconClass,
      toEmblemedIcon,
      mkEmblemedIcon, unEmblemedIcon,
      castToEmblemedIcon, gTypeEmblemedIcon,
      FileEnumerator(FileEnumerator), FileEnumeratorClass,
      toFileEnumerator,
      mkFileEnumerator, unFileEnumerator,
      castToFileEnumerator, gTypeFileEnumerator,
      FilenameCompleter(FilenameCompleter), FilenameCompleterClass,
      toFilenameCompleter,
      mkFilenameCompleter, unFilenameCompleter,
      castToFilenameCompleter, gTypeFilenameCompleter,
      FileIcon(FileIcon), FileIconClass,
      toFileIcon,
      mkFileIcon, unFileIcon,
      castToFileIcon, gTypeFileIcon,
      VolumeMonitor(VolumeMonitor), VolumeMonitorClass,
      toVolumeMonitor,
      mkVolumeMonitor, unVolumeMonitor,
      castToVolumeMonitor, gTypeVolumeMonitor,
      Cancellable(Cancellable), CancellableClass,
      toCancellable,
      mkCancellable, unCancellable,
      castToCancellable, gTypeCancellable,
      SimpleAsyncResult(SimpleAsyncResult), SimpleAsyncResultClass,
      toSimpleAsyncResult,
      mkSimpleAsyncResult, unSimpleAsyncResult,
      castToSimpleAsyncResult, gTypeSimpleAsyncResult,
      FileInfo(FileInfo), FileInfoClass,
      toFileInfo,
      mkFileInfo, unFileInfo,
      castToFileInfo, gTypeFileInfo,
      AppLaunchContext(AppLaunchContext), AppLaunchContextClass,
      toAppLaunchContext,
      mkAppLaunchContext, unAppLaunchContext,
      castToAppLaunchContext, gTypeAppLaunchContext,
      Icon(Icon), IconClass,
      toIcon,
      mkIcon, unIcon,
      castToIcon, gTypeIcon,
      Seekable(Seekable), SeekableClass,
      toSeekable,
      mkSeekable, unSeekable,
      castToSeekable, gTypeSeekable,
      AppInfo(AppInfo), AppInfoClass,
      toAppInfo,
      mkAppInfo, unAppInfo,
      castToAppInfo, gTypeAppInfo,
      Volume(Volume), VolumeClass,
      toVolume,
      mkVolume, unVolume,
      castToVolume, gTypeVolume,
      AsyncResult(AsyncResult), AsyncResultClass,
      toAsyncResult,
      mkAsyncResult, unAsyncResult,
      castToAsyncResult, gTypeAsyncResult,
      LoadableIcon(LoadableIcon), LoadableIconClass,
      toLoadableIcon,
      mkLoadableIcon, unLoadableIcon,
      castToLoadableIcon, gTypeLoadableIcon,
      Drive(Drive), DriveClass,
      toDrive,
      mkDrive, unDrive,
      castToDrive, gTypeDrive,
      File(File), FileClass,
      toFile,
      mkFile, unFile,
      castToFile, gTypeFile,
      Mount(Mount), MountClass,
      toMount,
      mkMount, unMount,
      castToMount, gTypeMount
      ) where

    import Foreign.ForeignPtr (ForeignPtr, castForeignPtr, unsafeForeignPtrToPtr)
    import Foreign.C.Types    (CULong(..), CUInt(..))
    import System.Glib.GType	(GType, typeInstanceIsA)
    import System.Glib.GObject

    {-# LINE 184 "./System/GIO/Types.chs" #-}

    -- The usage of foreignPtrToPtr should be safe as the evaluation will only be
    -- forced if the object is used afterwards
    --
    castTo :: (GObjectClass obj, GObjectClass obj') => GType -> String
                                                    -> (obj -> obj')
    castTo gtype objTypeName obj =
      case toGObject obj of
        gobj@(GObject objFPtr)
          | typeInstanceIsA ((unsafeForeignPtrToPtr.castForeignPtr) objFPtr) gtype
                      -> unsafeCastGObject gobj
          | otherwise -> error $ "Cannot cast object to " ++ objTypeName

    -- *************************************************************** OutputStream

    newtype OutputStream = OutputStream (ForeignPtr (OutputStream)) deriving (Eq,Ord)

    mkOutputStream = (OutputStream, objectUnref)
    unOutputStream (OutputStream o) = o

    class GObjectClass o => OutputStreamClass o
    toOutputStream :: OutputStreamClass o => o -> OutputStream
    toOutputStream = unsafeCastGObject . toGObject

    instance OutputStreamClass OutputStream
    instance GObjectClass OutputStream where
      toGObject = GObject . castForeignPtr . unOutputStream
      unsafeCastGObject = OutputStream . castForeignPtr . unGObject

    castToOutputStream :: GObjectClass obj => obj -> OutputStream
    castToOutputStream = castTo gTypeOutputStream "OutputStream"

    gTypeOutputStream :: GType
    gTypeOutputStream =
      g_output_stream_get_type
    {-# LINE 220 "./System/GIO/Types.chs" #-}

    -- ********************************************************* FilterOutputStream

    newtype FilterOutputStream = FilterOutputStream (ForeignPtr (FilterOutputStream)) deriving (Eq,Ord)

    mkFilterOutputStream = (FilterOutputStream, objectUnref)
    unFilterOutputStream (FilterOutputStream o) = o

    class OutputStreamClass o => FilterOutputStreamClass o
    toFilterOutputStream :: FilterOutputStreamClass o => o -> FilterOutputStream
    toFilterOutputStream = unsafeCastGObject . toGObject

    instance FilterOutputStreamClass FilterOutputStream
    instance OutputStreamClass FilterOutputStream
    instance GObjectClass FilterOutputStream where
      toGObject = GObject . castForeignPtr . unFilterOutputStream
      unsafeCastGObject = FilterOutputStream . castForeignPtr . unGObject

    castToFilterOutputStream :: GObjectClass obj => obj -> FilterOutputStream
    castToFilterOutputStream = castTo gTypeFilterOutputStream "FilterOutputStream"

    gTypeFilterOutputStream :: GType
    gTypeFilterOutputStream =
      g_filter_output_stream_get_type
    {-# LINE 244 "./System/GIO/Types.chs" #-}

    -- *********************************************************** DataOutputStream

    newtype DataOutputStream = DataOutputStream (ForeignPtr (DataOutputStream)) deriving (Eq,Ord)

    mkDataOutputStream = (DataOutputStream, objectUnref)
    unDataOutputStream (DataOutputStream o) = o

    class FilterOutputStreamClass o => DataOutputStreamClass o
    toDataOutputStream :: DataOutputStreamClass o => o -> DataOutputStream
    toDataOutputStream = unsafeCastGObject . toGObject

    instance DataOutputStreamClass DataOutputStream
    instance FilterOutputStreamClass DataOutputStream
    instance OutputStreamClass DataOutputStream
    instance GObjectClass DataOutputStream where
      toGObject = GObject . castForeignPtr . unDataOutputStream
      unsafeCastGObject = DataOutputStream . castForeignPtr . unGObject

    castToDataOutputStream :: GObjectClass obj => obj -> DataOutputStream
    castToDataOutputStream = castTo gTypeDataOutputStream "DataOutputStream"

    gTypeDataOutputStream :: GType
    gTypeDataOutputStream =
      g_data_output_stream_get_type
    {-# LINE 269 "./System/GIO/Types.chs" #-}

    -- ******************************************************* BufferedOutputStream

    newtype BufferedOutputStream = BufferedOutputStream (ForeignPtr (BufferedOutputStream)) deriving (Eq,Ord)

    mkBufferedOutputStream = (BufferedOutputStream, objectUnref)
    unBufferedOutputStream (BufferedOutputStream o) = o

    class FilterOutputStreamClass o => BufferedOutputStreamClass o
    toBufferedOutputStream :: BufferedOutputStreamClass o => o -> BufferedOutputStream
    toBufferedOutputStream = unsafeCastGObject . toGObject

    instance BufferedOutputStreamClass BufferedOutputStream
    instance FilterOutputStreamClass BufferedOutputStream
    instance OutputStreamClass BufferedOutputStream
    instance GObjectClass BufferedOutputStream where
      toGObject = GObject . castForeignPtr . unBufferedOutputStream
      unsafeCastGObject = BufferedOutputStream . castForeignPtr . unGObject

    castToBufferedOutputStream :: GObjectClass obj => obj -> BufferedOutputStream
    castToBufferedOutputStream = castTo gTypeBufferedOutputStream "BufferedOutputStream"

    gTypeBufferedOutputStream :: GType
    gTypeBufferedOutputStream =
      g_buffered_output_stream_get_type
    {-# LINE 294 "./System/GIO/Types.chs" #-}

    -- *********************************************************** FileOutputStream

    newtype FileOutputStream = FileOutputStream (ForeignPtr (FileOutputStream)) deriving (Eq,Ord)

    mkFileOutputStream = (FileOutputStream, objectUnref)
    unFileOutputStream (FileOutputStream o) = o

    class OutputStreamClass o => FileOutputStreamClass o
    toFileOutputStream :: FileOutputStreamClass o => o -> FileOutputStream
    toFileOutputStream = unsafeCastGObject . toGObject

    instance FileOutputStreamClass FileOutputStream
    instance OutputStreamClass FileOutputStream
    instance GObjectClass FileOutputStream where
      toGObject = GObject . castForeignPtr . unFileOutputStream
      unsafeCastGObject = FileOutputStream . castForeignPtr . unGObject

    castToFileOutputStream :: GObjectClass obj => obj -> FileOutputStream
    castToFileOutputStream = castTo gTypeFileOutputStream "FileOutputStream"

    gTypeFileOutputStream :: GType
    gTypeFileOutputStream =
      g_file_output_stream_get_type
    {-# LINE 318 "./System/GIO/Types.chs" #-}

    -- ********************************************************* MemoryOutputStream

    newtype MemoryOutputStream = MemoryOutputStream (ForeignPtr (MemoryOutputStream)) deriving (Eq,Ord)

    mkMemoryOutputStream = (MemoryOutputStream, objectUnref)
    unMemoryOutputStream (MemoryOutputStream o) = o

    class OutputStreamClass o => MemoryOutputStreamClass o
    toMemoryOutputStream :: MemoryOutputStreamClass o => o -> MemoryOutputStream
    toMemoryOutputStream = unsafeCastGObject . toGObject

    instance MemoryOutputStreamClass MemoryOutputStream
    instance OutputStreamClass MemoryOutputStream
    instance GObjectClass MemoryOutputStream where
      toGObject = GObject . castForeignPtr . unMemoryOutputStream
      unsafeCastGObject = MemoryOutputStream . castForeignPtr . unGObject

    castToMemoryOutputStream :: GObjectClass obj => obj -> MemoryOutputStream
    castToMemoryOutputStream = castTo gTypeMemoryOutputStream "MemoryOutputStream"

    gTypeMemoryOutputStream :: GType
    gTypeMemoryOutputStream =
      g_memory_output_stream_get_type
    {-# LINE 342 "./System/GIO/Types.chs" #-}

    -- **************************************************************** InputStream

    newtype InputStream = InputStream (ForeignPtr (InputStream)) deriving (Eq,Ord)

    mkInputStream = (InputStream, objectUnref)
    unInputStream (InputStream o) = o

    class GObjectClass o => InputStreamClass o
    toInputStream :: InputStreamClass o => o -> InputStream
    toInputStream = unsafeCastGObject . toGObject

    instance InputStreamClass InputStream
    instance GObjectClass InputStream where
      toGObject = GObject . castForeignPtr . unInputStream
      unsafeCastGObject = InputStream . castForeignPtr . unGObject

    castToInputStream :: GObjectClass obj => obj -> InputStream
    castToInputStream = castTo gTypeInputStream "InputStream"

    gTypeInputStream :: GType
    gTypeInputStream =
      g_input_stream_get_type
    {-# LINE 365 "./System/GIO/Types.chs" #-}

    -- ********************************************************** MemoryInputStream

    newtype MemoryInputStream = MemoryInputStream (ForeignPtr (MemoryInputStream)) deriving (Eq,Ord)

    mkMemoryInputStream = (MemoryInputStream, objectUnref)
    unMemoryInputStream (MemoryInputStream o) = o

    class InputStreamClass o => MemoryInputStreamClass o
    toMemoryInputStream :: MemoryInputStreamClass o => o -> MemoryInputStream
    toMemoryInputStream = unsafeCastGObject . toGObject

    instance MemoryInputStreamClass MemoryInputStream
    instance InputStreamClass MemoryInputStream
    instance GObjectClass MemoryInputStream where
      toGObject = GObject . castForeignPtr . unMemoryInputStream
      unsafeCastGObject = MemoryInputStream . castForeignPtr . unGObject

    castToMemoryInputStream :: GObjectClass obj => obj -> MemoryInputStream
    castToMemoryInputStream = castTo gTypeMemoryInputStream "MemoryInputStream"

    gTypeMemoryInputStream :: GType
    gTypeMemoryInputStream =
      g_memory_input_stream_get_type
    {-# LINE 389 "./System/GIO/Types.chs" #-}

    -- ********************************************************** FilterInputStream

    newtype FilterInputStream = FilterInputStream (ForeignPtr (FilterInputStream)) deriving (Eq,Ord)

    mkFilterInputStream = (FilterInputStream, objectUnref)
    unFilterInputStream (FilterInputStream o) = o

    class InputStreamClass o => FilterInputStreamClass o
    toFilterInputStream :: FilterInputStreamClass o => o -> FilterInputStream
    toFilterInputStream = unsafeCastGObject . toGObject

    instance FilterInputStreamClass FilterInputStream
    instance InputStreamClass FilterInputStream
    instance GObjectClass FilterInputStream where
      toGObject = GObject . castForeignPtr . unFilterInputStream
      unsafeCastGObject = FilterInputStream . castForeignPtr . unGObject

    castToFilterInputStream :: GObjectClass obj => obj -> FilterInputStream
    castToFilterInputStream = castTo gTypeFilterInputStream "FilterInputStream"

    gTypeFilterInputStream :: GType
    gTypeFilterInputStream =
      g_filter_input_stream_get_type
    {-# LINE 413 "./System/GIO/Types.chs" #-}

    -- ******************************************************** BufferedInputStream

    newtype BufferedInputStream = BufferedInputStream (ForeignPtr (BufferedInputStream)) deriving (Eq,Ord)

    mkBufferedInputStream = (BufferedInputStream, objectUnref)
    unBufferedInputStream (BufferedInputStream o) = o

    class FilterInputStreamClass o => BufferedInputStreamClass o
    toBufferedInputStream :: BufferedInputStreamClass o => o -> BufferedInputStream
    toBufferedInputStream = unsafeCastGObject . toGObject

    instance BufferedInputStreamClass BufferedInputStream
    instance FilterInputStreamClass BufferedInputStream
    instance InputStreamClass BufferedInputStream
    instance GObjectClass BufferedInputStream where
      toGObject = GObject . castForeignPtr . unBufferedInputStream
      unsafeCastGObject = BufferedInputStream . castForeignPtr . unGObject

    castToBufferedInputStream :: GObjectClass obj => obj -> BufferedInputStream
    castToBufferedInputStream = castTo gTypeBufferedInputStream "BufferedInputStream"

    gTypeBufferedInputStream :: GType
    gTypeBufferedInputStream =
      g_buffered_input_stream_get_type
    {-# LINE 438 "./System/GIO/Types.chs" #-}

    -- ************************************************************ DataInputStream

    newtype DataInputStream = DataInputStream (ForeignPtr (DataInputStream)) deriving (Eq,Ord)

    mkDataInputStream = (DataInputStream, objectUnref)
    unDataInputStream (DataInputStream o) = o

    class BufferedInputStreamClass o => DataInputStreamClass o
    toDataInputStream :: DataInputStreamClass o => o -> DataInputStream
    toDataInputStream = unsafeCastGObject . toGObject

    instance DataInputStreamClass DataInputStream
    instance BufferedInputStreamClass DataInputStream
    instance FilterInputStreamClass DataInputStream
    instance InputStreamClass DataInputStream
    instance GObjectClass DataInputStream where
      toGObject = GObject . castForeignPtr . unDataInputStream
      unsafeCastGObject = DataInputStream . castForeignPtr . unGObject

    castToDataInputStream :: GObjectClass obj => obj -> DataInputStream
    castToDataInputStream = castTo gTypeDataInputStream "DataInputStream"

    gTypeDataInputStream :: GType
    gTypeDataInputStream =
      g_data_input_stream_get_type
    {-# LINE 464 "./System/GIO/Types.chs" #-}

    -- ************************************************************ FileInputStream

    newtype FileInputStream = FileInputStream (ForeignPtr (FileInputStream)) deriving (Eq,Ord)

    mkFileInputStream = (FileInputStream, objectUnref)
    unFileInputStream (FileInputStream o) = o

    class InputStreamClass o => FileInputStreamClass o
    toFileInputStream :: FileInputStreamClass o => o -> FileInputStream
    toFileInputStream = unsafeCastGObject . toGObject

    instance FileInputStreamClass FileInputStream
    instance InputStreamClass FileInputStream
    instance GObjectClass FileInputStream where
      toGObject = GObject . castForeignPtr . unFileInputStream
      unsafeCastGObject = FileInputStream . castForeignPtr . unGObject

    castToFileInputStream :: GObjectClass obj => obj -> FileInputStream
    castToFileInputStream = castTo gTypeFileInputStream "FileInputStream"

    gTypeFileInputStream :: GType
    gTypeFileInputStream =
      g_file_input_stream_get_type
    {-# LINE 488 "./System/GIO/Types.chs" #-}

    -- **************************************************************** FileMonitor

    newtype FileMonitor = FileMonitor (ForeignPtr (FileMonitor)) deriving (Eq,Ord)

    mkFileMonitor = (FileMonitor, objectUnref)
    unFileMonitor (FileMonitor o) = o

    class GObjectClass o => FileMonitorClass o
    toFileMonitor :: FileMonitorClass o => o -> FileMonitor
    toFileMonitor = unsafeCastGObject . toGObject

    instance FileMonitorClass FileMonitor
    instance GObjectClass FileMonitor where
      toGObject = GObject . castForeignPtr . unFileMonitor
      unsafeCastGObject = FileMonitor . castForeignPtr . unGObject

    castToFileMonitor :: GObjectClass obj => obj -> FileMonitor
    castToFileMonitor = castTo gTypeFileMonitor "FileMonitor"

    gTypeFileMonitor :: GType
    gTypeFileMonitor =
      g_file_monitor_get_type
    {-# LINE 511 "./System/GIO/Types.chs" #-}

    -- ************************************************************************ Vfs

    newtype Vfs = Vfs (ForeignPtr (Vfs)) deriving (Eq,Ord)

    mkVfs = (Vfs, objectUnref)
    unVfs (Vfs o) = o

    class GObjectClass o => VfsClass o
    toVfs :: VfsClass o => o -> Vfs
    toVfs = unsafeCastGObject . toGObject

    instance VfsClass Vfs
    instance GObjectClass Vfs where
      toGObject = GObject . castForeignPtr . unVfs
      unsafeCastGObject = Vfs . castForeignPtr . unGObject

    castToVfs :: GObjectClass obj => obj -> Vfs
    castToVfs = castTo gTypeVfs "Vfs"

    gTypeVfs :: GType
    gTypeVfs =
      g_vfs_get_type
    {-# LINE 534 "./System/GIO/Types.chs" #-}

    -- ************************************************************* MountOperation

    newtype MountOperation = MountOperation (ForeignPtr (MountOperation)) deriving (Eq,Ord)

    mkMountOperation = (MountOperation, objectUnref)
    unMountOperation (MountOperation o) = o

    class GObjectClass o => MountOperationClass o
    toMountOperation :: MountOperationClass o => o -> MountOperation
    toMountOperation = unsafeCastGObject . toGObject

    instance MountOperationClass MountOperation
    instance GObjectClass MountOperation where
      toGObject = GObject . castForeignPtr . unMountOperation
      unsafeCastGObject = MountOperation . castForeignPtr . unGObject

    castToMountOperation :: GObjectClass obj => obj -> MountOperation
    castToMountOperation = castTo gTypeMountOperation "MountOperation"

    gTypeMountOperation :: GType
    gTypeMountOperation =
      g_mount_operation_get_type
    {-# LINE 557 "./System/GIO/Types.chs" #-}

    -- ***************************************************************** ThemedIcon

    newtype ThemedIcon = ThemedIcon (ForeignPtr (ThemedIcon)) deriving (Eq,Ord)

    mkThemedIcon = (ThemedIcon, objectUnref)
    unThemedIcon (ThemedIcon o) = o

    class GObjectClass o => ThemedIconClass o
    toThemedIcon :: ThemedIconClass o => o -> ThemedIcon
    toThemedIcon = unsafeCastGObject . toGObject

    instance ThemedIconClass ThemedIcon
    instance GObjectClass ThemedIcon where
      toGObject = GObject . castForeignPtr . unThemedIcon
      unsafeCastGObject = ThemedIcon . castForeignPtr . unGObject

    castToThemedIcon :: GObjectClass obj => obj -> ThemedIcon
    castToThemedIcon = castTo gTypeThemedIcon "ThemedIcon"

    gTypeThemedIcon :: GType
    gTypeThemedIcon =
      g_themed_icon_get_type
    {-# LINE 580 "./System/GIO/Types.chs" #-}

    -- ********************************************************************* Emblem

    newtype Emblem = Emblem (ForeignPtr (Emblem)) deriving (Eq,Ord)

    mkEmblem = (Emblem, objectUnref)
    unEmblem (Emblem o) = o

    class GObjectClass o => EmblemClass o
    toEmblem :: EmblemClass o => o -> Emblem
    toEmblem = unsafeCastGObject . toGObject

    instance EmblemClass Emblem
    instance GObjectClass Emblem where
      toGObject = GObject . castForeignPtr . unEmblem
      unsafeCastGObject = Emblem . castForeignPtr . unGObject

    castToEmblem :: GObjectClass obj => obj -> Emblem
    castToEmblem = castTo gTypeEmblem "Emblem"

    gTypeEmblem :: GType
    gTypeEmblem =
      g_emblem_get_type
    {-# LINE 603 "./System/GIO/Types.chs" #-}

    -- *************************************************************** EmblemedIcon

    newtype EmblemedIcon = EmblemedIcon (ForeignPtr (EmblemedIcon)) deriving (Eq,Ord)

    mkEmblemedIcon = (EmblemedIcon, objectUnref)
    unEmblemedIcon (EmblemedIcon o) = o

    class GObjectClass o => EmblemedIconClass o
    toEmblemedIcon :: EmblemedIconClass o => o -> EmblemedIcon
    toEmblemedIcon = unsafeCastGObject . toGObject

    instance EmblemedIconClass EmblemedIcon
    instance GObjectClass EmblemedIcon where
      toGObject = GObject . castForeignPtr . unEmblemedIcon
      unsafeCastGObject = EmblemedIcon . castForeignPtr . unGObject

    castToEmblemedIcon :: GObjectClass obj => obj -> EmblemedIcon
    castToEmblemedIcon = castTo gTypeEmblemedIcon "EmblemedIcon"

    gTypeEmblemedIcon :: GType
    gTypeEmblemedIcon =
      g_emblemed_icon_get_type
    {-# LINE 626 "./System/GIO/Types.chs" #-}

    -- ************************************************************* FileEnumerator

    newtype FileEnumerator = FileEnumerator (ForeignPtr (FileEnumerator)) deriving (Eq,Ord)

    mkFileEnumerator = (FileEnumerator, objectUnref)
    unFileEnumerator (FileEnumerator o) = o

    class GObjectClass o => FileEnumeratorClass o
    toFileEnumerator :: FileEnumeratorClass o => o -> FileEnumerator
    toFileEnumerator = unsafeCastGObject . toGObject

    instance FileEnumeratorClass FileEnumerator
    instance GObjectClass FileEnumerator where
      toGObject = GObject . castForeignPtr . unFileEnumerator
      unsafeCastGObject = FileEnumerator . castForeignPtr . unGObject

    castToFileEnumerator :: GObjectClass obj => obj -> FileEnumerator
    castToFileEnumerator = castTo gTypeFileEnumerator "FileEnumerator"

    gTypeFileEnumerator :: GType
    gTypeFileEnumerator =
      g_file_enumerator_get_type
    {-# LINE 649 "./System/GIO/Types.chs" #-}

    -- ********************************************************** FilenameCompleter

    newtype FilenameCompleter = FilenameCompleter (ForeignPtr (FilenameCompleter)) deriving (Eq,Ord)

    mkFilenameCompleter = (FilenameCompleter, objectUnref)
    unFilenameCompleter (FilenameCompleter o) = o

    class GObjectClass o => FilenameCompleterClass o
    toFilenameCompleter :: FilenameCompleterClass o => o -> FilenameCompleter
    toFilenameCompleter = unsafeCastGObject . toGObject

    instance FilenameCompleterClass FilenameCompleter
    instance GObjectClass FilenameCompleter where
      toGObject = GObject . castForeignPtr . unFilenameCompleter
      unsafeCastGObject = FilenameCompleter . castForeignPtr . unGObject

    castToFilenameCompleter :: GObjectClass obj => obj -> FilenameCompleter
    castToFilenameCompleter = castTo gTypeFilenameCompleter "FilenameCompleter"

    gTypeFilenameCompleter :: GType
    gTypeFilenameCompleter =
      g_filename_completer_get_type
    {-# LINE 672 "./System/GIO/Types.chs" #-}

    -- ******************************************************************* FileIcon

    newtype FileIcon = FileIcon (ForeignPtr (FileIcon)) deriving (Eq,Ord)

    mkFileIcon = (FileIcon, objectUnref)
    unFileIcon (FileIcon o) = o

    class GObjectClass o => FileIconClass o
    toFileIcon :: FileIconClass o => o -> FileIcon
    toFileIcon = unsafeCastGObject . toGObject

    instance FileIconClass FileIcon
    instance GObjectClass FileIcon where
      toGObject = GObject . castForeignPtr . unFileIcon
      unsafeCastGObject = FileIcon . castForeignPtr . unGObject

    castToFileIcon :: GObjectClass obj => obj -> FileIcon
    castToFileIcon = castTo gTypeFileIcon "FileIcon"

    gTypeFileIcon :: GType
    gTypeFileIcon =
      g_file_icon_get_type
    {-# LINE 695 "./System/GIO/Types.chs" #-}

    -- ************************************************************** VolumeMonitor

    newtype VolumeMonitor = VolumeMonitor (ForeignPtr (VolumeMonitor)) deriving (Eq,Ord)

    mkVolumeMonitor = (VolumeMonitor, objectUnref)
    unVolumeMonitor (VolumeMonitor o) = o

    class GObjectClass o => VolumeMonitorClass o
    toVolumeMonitor :: VolumeMonitorClass o => o -> VolumeMonitor
    toVolumeMonitor = unsafeCastGObject . toGObject

    instance VolumeMonitorClass VolumeMonitor
    instance GObjectClass VolumeMonitor where
      toGObject = GObject . castForeignPtr . unVolumeMonitor
      unsafeCastGObject = VolumeMonitor . castForeignPtr . unGObject

    castToVolumeMonitor :: GObjectClass obj => obj -> VolumeMonitor
    castToVolumeMonitor = castTo gTypeVolumeMonitor "VolumeMonitor"

    gTypeVolumeMonitor :: GType
    gTypeVolumeMonitor =
      g_volume_monitor_get_type
    {-# LINE 718 "./System/GIO/Types.chs" #-}

    -- **************************************************************** Cancellable

    newtype Cancellable = Cancellable (ForeignPtr (Cancellable)) deriving (Eq,Ord)

    mkCancellable = (Cancellable, objectUnref)
    unCancellable (Cancellable o) = o

    class GObjectClass o => CancellableClass o
    toCancellable :: CancellableClass o => o -> Cancellable
    toCancellable = unsafeCastGObject . toGObject

    instance CancellableClass Cancellable
    instance GObjectClass Cancellable where
      toGObject = GObject . castForeignPtr . unCancellable
      unsafeCastGObject = Cancellable . castForeignPtr . unGObject

    castToCancellable :: GObjectClass obj => obj -> Cancellable
    castToCancellable = castTo gTypeCancellable "Cancellable"

    gTypeCancellable :: GType
    gTypeCancellable =
      g_cancellable_get_type
    {-# LINE 741 "./System/GIO/Types.chs" #-}

    -- ********************************************************** SimpleAsyncResult

    newtype SimpleAsyncResult = SimpleAsyncResult (ForeignPtr (SimpleAsyncResult)) deriving (Eq,Ord)

    mkSimpleAsyncResult = (SimpleAsyncResult, objectUnref)
    unSimpleAsyncResult (SimpleAsyncResult o) = o

    class GObjectClass o => SimpleAsyncResultClass o
    toSimpleAsyncResult :: SimpleAsyncResultClass o => o -> SimpleAsyncResult
    toSimpleAsyncResult = unsafeCastGObject . toGObject

    instance SimpleAsyncResultClass SimpleAsyncResult
    instance GObjectClass SimpleAsyncResult where
      toGObject = GObject . castForeignPtr . unSimpleAsyncResult
      unsafeCastGObject = SimpleAsyncResult . castForeignPtr . unGObject

    castToSimpleAsyncResult :: GObjectClass obj => obj -> SimpleAsyncResult
    castToSimpleAsyncResult = castTo gTypeSimpleAsyncResult "SimpleAsyncResult"

    gTypeSimpleAsyncResult :: GType
    gTypeSimpleAsyncResult =
      g_async_result_get_type
    {-# LINE 764 "./System/GIO/Types.chs" #-}

    -- ******************************************************************* FileInfo

    newtype FileInfo = FileInfo (ForeignPtr (FileInfo)) deriving (Eq,Ord)

    mkFileInfo = (FileInfo, objectUnref)
    unFileInfo (FileInfo o) = o

    class GObjectClass o => FileInfoClass o
    toFileInfo :: FileInfoClass o => o -> FileInfo
    toFileInfo = unsafeCastGObject . toGObject

    instance FileInfoClass FileInfo
    instance GObjectClass FileInfo where
      toGObject = GObject . castForeignPtr . unFileInfo
      unsafeCastGObject = FileInfo . castForeignPtr . unGObject

    castToFileInfo :: GObjectClass obj => obj -> FileInfo
    castToFileInfo = castTo gTypeFileInfo "FileInfo"

    gTypeFileInfo :: GType
    gTypeFileInfo =
      g_file_info_get_type
    {-# LINE 787 "./System/GIO/Types.chs" #-}

    -- *********************************************************** AppLaunchContext

    newtype AppLaunchContext = AppLaunchContext (ForeignPtr (AppLaunchContext)) deriving (Eq,Ord)

    mkAppLaunchContext = (AppLaunchContext, objectUnref)
    unAppLaunchContext (AppLaunchContext o) = o

    class FileInfoClass o => AppLaunchContextClass o
    toAppLaunchContext :: AppLaunchContextClass o => o -> AppLaunchContext
    toAppLaunchContext = unsafeCastGObject . toGObject

    instance AppLaunchContextClass AppLaunchContext
    instance FileInfoClass AppLaunchContext
    instance GObjectClass AppLaunchContext where
      toGObject = GObject . castForeignPtr . unAppLaunchContext
      unsafeCastGObject = AppLaunchContext . castForeignPtr . unGObject

    castToAppLaunchContext :: GObjectClass obj => obj -> AppLaunchContext
    castToAppLaunchContext = castTo gTypeAppLaunchContext "AppLaunchContext"

    gTypeAppLaunchContext :: GType
    gTypeAppLaunchContext =
      g_app_launch_context_get_type
    {-# LINE 811 "./System/GIO/Types.chs" #-}

    -- *********************************************************************** Icon

    newtype Icon = Icon (ForeignPtr (Icon)) deriving (Eq,Ord)

    mkIcon = (Icon, objectUnref)
    unIcon (Icon o) = o

    class GObjectClass o => IconClass o
    toIcon :: IconClass o => o -> Icon
    toIcon = unsafeCastGObject . toGObject

    instance IconClass Icon
    instance GObjectClass Icon where
      toGObject = GObject . castForeignPtr . unIcon
      unsafeCastGObject = Icon . castForeignPtr . unGObject

    castToIcon :: GObjectClass obj => obj -> Icon
    castToIcon = castTo gTypeIcon "Icon"

    gTypeIcon :: GType
    gTypeIcon =
      g_icon_get_type
    {-# LINE 834 "./System/GIO/Types.chs" #-}

    -- ******************************************************************* Seekable

    newtype Seekable = Seekable (ForeignPtr (Seekable)) deriving (Eq,Ord)

    mkSeekable = (Seekable, objectUnref)
    unSeekable (Seekable o) = o

    class GObjectClass o => SeekableClass o
    toSeekable :: SeekableClass o => o -> Seekable
    toSeekable = unsafeCastGObject . toGObject

    instance SeekableClass Seekable
    instance GObjectClass Seekable where
      toGObject = GObject . castForeignPtr . unSeekable
      unsafeCastGObject = Seekable . castForeignPtr . unGObject

    castToSeekable :: GObjectClass obj => obj -> Seekable
    castToSeekable = castTo gTypeSeekable "Seekable"

    gTypeSeekable :: GType
    gTypeSeekable =
      g_seekable_get_type
    {-# LINE 857 "./System/GIO/Types.chs" #-}

    -- ******************************************************************** AppInfo

    newtype AppInfo = AppInfo (ForeignPtr (AppInfo)) deriving (Eq,Ord)

    mkAppInfo = (AppInfo, objectUnref)
    unAppInfo (AppInfo o) = o

    class GObjectClass o => AppInfoClass o
    toAppInfo :: AppInfoClass o => o -> AppInfo
    toAppInfo = unsafeCastGObject . toGObject

    instance AppInfoClass AppInfo
    instance GObjectClass AppInfo where
      toGObject = GObject . castForeignPtr . unAppInfo
      unsafeCastGObject = AppInfo . castForeignPtr . unGObject

    castToAppInfo :: GObjectClass obj => obj -> AppInfo
    castToAppInfo = castTo gTypeAppInfo "AppInfo"

    gTypeAppInfo :: GType
    gTypeAppInfo =
      g_app_info_get_type
    {-# LINE 880 "./System/GIO/Types.chs" #-}

    -- ********************************************************************* Volume

    newtype Volume = Volume (ForeignPtr (Volume)) deriving (Eq,Ord)

    mkVolume = (Volume, objectUnref)
    unVolume (Volume o) = o

    class GObjectClass o => VolumeClass o
    toVolume :: VolumeClass o => o -> Volume
    toVolume = unsafeCastGObject . toGObject

    instance VolumeClass Volume
    instance GObjectClass Volume where
      toGObject = GObject . castForeignPtr . unVolume
      unsafeCastGObject = Volume . castForeignPtr . unGObject

    castToVolume :: GObjectClass obj => obj -> Volume
    castToVolume = castTo gTypeVolume "Volume"

    gTypeVolume :: GType
    gTypeVolume =
      g_volume_get_type
    {-# LINE 903 "./System/GIO/Types.chs" #-}

    -- **************************************************************** AsyncResult

    newtype AsyncResult = AsyncResult (ForeignPtr (AsyncResult)) deriving (Eq,Ord)

    mkAsyncResult = (AsyncResult, objectUnref)
    unAsyncResult (AsyncResult o) = o

    class GObjectClass o => AsyncResultClass o
    toAsyncResult :: AsyncResultClass o => o -> AsyncResult
    toAsyncResult = unsafeCastGObject . toGObject

    instance AsyncResultClass AsyncResult
    instance GObjectClass AsyncResult where
      toGObject = GObject . castForeignPtr . unAsyncResult
      unsafeCastGObject = AsyncResult . castForeignPtr . unGObject

    castToAsyncResult :: GObjectClass obj => obj -> AsyncResult
    castToAsyncResult = castTo gTypeAsyncResult "AsyncResult"

    gTypeAsyncResult :: GType
    gTypeAsyncResult =
      g_async_result_get_type
    {-# LINE 926 "./System/GIO/Types.chs" #-}

    -- *************************************************************** LoadableIcon

    newtype LoadableIcon = LoadableIcon (ForeignPtr (LoadableIcon)) deriving (Eq,Ord)

    mkLoadableIcon = (LoadableIcon, objectUnref)
    unLoadableIcon (LoadableIcon o) = o

    class GObjectClass o => LoadableIconClass o
    toLoadableIcon :: LoadableIconClass o => o -> LoadableIcon
    toLoadableIcon = unsafeCastGObject . toGObject

    instance LoadableIconClass LoadableIcon
    instance GObjectClass LoadableIcon where
      toGObject = GObject . castForeignPtr . unLoadableIcon
      unsafeCastGObject = LoadableIcon . castForeignPtr . unGObject

    castToLoadableIcon :: GObjectClass obj => obj -> LoadableIcon
    castToLoadableIcon = castTo gTypeLoadableIcon "LoadableIcon"

    gTypeLoadableIcon :: GType
    gTypeLoadableIcon =
      g_loadable_icon_get_type
    {-# LINE 949 "./System/GIO/Types.chs" #-}

    -- ********************************************************************** Drive

    newtype Drive = Drive (ForeignPtr (Drive)) deriving (Eq,Ord)

    mkDrive = (Drive, objectUnref)
    unDrive (Drive o) = o

    class GObjectClass o => DriveClass o
    toDrive :: DriveClass o => o -> Drive
    toDrive = unsafeCastGObject . toGObject

    instance DriveClass Drive
    instance GObjectClass Drive where
      toGObject = GObject . castForeignPtr . unDrive
      unsafeCastGObject = Drive . castForeignPtr . unGObject

    castToDrive :: GObjectClass obj => obj -> Drive
    castToDrive = castTo gTypeDrive "Drive"

    gTypeDrive :: GType
    gTypeDrive =
      g_drive_get_type
    {-# LINE 972 "./System/GIO/Types.chs" #-}

    -- *********************************************************************** File

    newtype File = File (ForeignPtr (File))
    {-# LINE 976 "./System/GIO/Types.chs" #-}

    mkFile = (File, objectUnref)
    unFile (File o) = o

    class GObjectClass o => FileClass o
    toFile :: FileClass o => o -> File
    toFile = unsafeCastGObject . toGObject

    instance FileClass File
    instance GObjectClass File where
      toGObject = GObject . castForeignPtr . unFile
      unsafeCastGObject = File . castForeignPtr . unGObject

    castToFile :: GObjectClass obj => obj -> File
    castToFile = castTo gTypeFile "File"

    gTypeFile :: GType
    gTypeFile =
      g_file_get_type
    {-# LINE 995 "./System/GIO/Types.chs" #-}

    -- ********************************************************************** Mount

    newtype Mount = Mount (ForeignPtr (Mount)) deriving (Eq,Ord)

    mkMount = (Mount, objectUnref)
    unMount (Mount o) = o

    class GObjectClass o => MountClass o
    toMount :: MountClass o => o -> Mount
    toMount = unsafeCastGObject . toGObject

    instance MountClass Mount
    instance GObjectClass Mount where
      toGObject = GObject . castForeignPtr . unMount
      unsafeCastGObject = Mount . castForeignPtr . unGObject

    castToMount :: GObjectClass obj => obj -> Mount
    castToMount = castTo gTypeMount "Mount"

    gTypeMount :: GType
    gTypeMount =
      g_mount_get_type
    {-# LINE 1018 "./System/GIO/Types.chs" #-}

    foreign import ccall unsafe "g_output_stream_get_type"
      g_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_filter_output_stream_get_type"
      g_filter_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_data_output_stream_get_type"
      g_data_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_buffered_output_stream_get_type"
      g_buffered_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_file_output_stream_get_type"
      g_file_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_memory_output_stream_get_type"
      g_memory_output_stream_get_type :: CUInt

    foreign import ccall unsafe "g_input_stream_get_type"
      g_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_memory_input_stream_get_type"
      g_memory_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_filter_input_stream_get_type"
      g_filter_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_buffered_input_stream_get_type"
      g_buffered_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_data_input_stream_get_type"
      g_data_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_file_input_stream_get_type"
      g_file_input_stream_get_type :: CUInt

    foreign import ccall unsafe "g_file_monitor_get_type"
      g_file_monitor_get_type :: CUInt

    foreign import ccall unsafe "g_vfs_get_type"
      g_vfs_get_type :: CUInt

    foreign import ccall unsafe "g_mount_operation_get_type"
      g_mount_operation_get_type :: CUInt

    foreign import ccall unsafe "g_themed_icon_get_type"
      g_themed_icon_get_type :: CUInt

    foreign import ccall unsafe "g_emblem_get_type"
      g_emblem_get_type :: CUInt

    foreign import ccall unsafe "g_emblemed_icon_get_type"
      g_emblemed_icon_get_type :: CUInt

    foreign import ccall unsafe "g_file_enumerator_get_type"
      g_file_enumerator_get_type :: CUInt

    foreign import ccall unsafe "g_filename_completer_get_type"
      g_filename_completer_get_type :: CUInt

    foreign import ccall unsafe "g_file_icon_get_type"
      g_file_icon_get_type :: CUInt

    foreign import ccall unsafe "g_volume_monitor_get_type"
      g_volume_monitor_get_type :: CUInt

    foreign import ccall unsafe "g_cancellable_get_type"
      g_cancellable_get_type :: CUInt

    foreign import ccall unsafe "g_async_result_get_type"
      g_async_result_get_type :: CUInt

    foreign import ccall unsafe "g_file_info_get_type"
      g_file_info_get_type :: CUInt

    foreign import ccall unsafe "g_app_launch_context_get_type"
      g_app_launch_context_get_type :: CUInt

    foreign import ccall unsafe "g_icon_get_type"
      g_icon_get_type :: CUInt

    foreign import ccall unsafe "g_seekable_get_type"
      g_seekable_get_type :: CUInt

    foreign import ccall unsafe "g_app_info_get_type"
      g_app_info_get_type :: CUInt

    foreign import ccall unsafe "g_volume_get_type"
      g_volume_get_type :: CUInt

    foreign import ccall unsafe "g_loadable_icon_get_type"
      g_loadable_icon_get_type :: CUInt

    foreign import ccall unsafe "g_drive_get_type"
      g_drive_get_type :: CUInt

    foreign import ccall unsafe "g_file_get_type"
      g_file_get_type :: CUInt

    foreign import ccall unsafe "g_mount_get_type"
      g_mount_get_type :: CUInt