{-# LINE 1 "System/GIO/File/FileAttribute.hsc" #-}
{-# LANGUAGE CPP #-}
{-# LINE 2 "System/GIO/File/FileAttribute.hsc" #-}


{-# LINE 4 "System/GIO/File/FileAttribute.hsc" #-}

--  GIMP Toolkit (GTK) Binding for Haskell: binding to gio -*-haskell-*-
--
--  Author : Peter Gavin
--  Created: 13-Oct-2008
--
--  Copyright (c) 2008 Peter Gavin
--
--  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 3 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.
--  
--  You should have received a copy of the GNU Lesser General Public
--  License along with this program.  If not, see
--  <http://www.gnu.org/licenses/>.
--  
--  GIO, the C library which this Haskell library depends on, is
--  available under LGPL Version 2. The documentation included with
--  this library is based on the original GIO documentation.
--  
-- | Maintainer  : gtk2hs-devel@lists.sourceforge.net
--   Stability   : alpha
--   Portability : portable (depends on GHC)
module System.GIO.File.FileAttribute (
    FileAttributeType (..),
    FileAttributeInfo (..),
    FileAttributeInfoFlags (..),
    fileAttributeStandardType,
    fileAttributeStandardIsHidden,
    fileAttributeStandardIsBackup,
    fileAttributeStandardIsSymlink,
    fileAttributeStandardIsVirtual,
    fileAttributeStandardName,
    fileAttributeStandardDisplayName,
    fileAttributeStandardEditName,
    fileAttributeStandardCopyName,
    fileAttributeStandardIcon,
    fileAttributeStandardContentType,
    fileAttributeStandardFastContentType,
    fileAttributeStandardSize,
    fileAttributeStandardSymlinkTarget,
    fileAttributeStandardTargetURI,
    fileAttributeStandardSortOrder,
    fileAttributeEtagValue,
    fileAttributeIDFile,
    fileAttributeIDFilesystem,
    fileAttributeAccessCanRead,
    fileAttributeAccessCanWrite,
    fileAttributeAccessCanExecute,
    fileAttributeAccessCanDelete,
    fileAttributeAccessCanTrash,
    fileAttributeAccessCanRename,
    fileAttributeMountableCanMount,
    fileAttributeMountableCanUnmount,
    fileAttributeMountableCanEject,
    fileAttributeMountableUnixDevice,
    fileAttributeMountableHalUDI,
    fileAttributeTimeModified,
    fileAttributeTimeModifiedUSec,
    fileAttributeTimeAccess,
    fileAttributeTimeAccessUSec,
    fileAttributeTimeChanged,
    fileAttributeTimeChangedUSec,
    fileAttributeTimeCreated,
    fileAttributeTimeCreatedUSec,
    fileAttributeUnixDevice,
    fileAttributeUnixInode,
    fileAttributeUnixMode,
    fileAttributeUnixNLink,
    fileAttributeUnixUID,
    fileAttributeUnixGID,
    fileAttributeUnixRDev,
    fileAttributeUnixBlockSize,
    fileAttributeUnixBlocks,
    fileAttributeDosIsArchive,
    fileAttributeDosIsSystem,
    fileAttributeOwnerUser,
    fileAttributeOwnerUserReal,
    fileAttributeOwnerGroup,
    fileAttributeThumbnailPath,
    fileAttributeThumbnailingFailed,
    fileAttributeFilesystemSize,
    fileAttributeFilesystemFree,
    fileAttributeFilesystemType,
    fileAttributeFilesystemReadonly,
    fileAttributeGVfsBackend,
    fileAttributeSELinuxContext,
    fileAttributeTrashItemCount,
    fileAttributeFilesystemUsePreview,
    fileAttributeStandardDescription,
    ) where

import System.Glib.FFI
import System.Glib.UTFString

import System.GIO.Base

data FileAttributeType = FileAttributeTypeInvalid
                       | FileAttributeTypeString
                       | FileAttributeTypeByteString
                       | FileAttributeTypeBool
                       | FileAttributeTypeWord32
                       | FileAttributeTypeInt32
                       | FileAttributeTypeWord64
                       | FileAttributeTypeInt64
                       | FileAttributeTypeObject
                         deriving (Eq, Ord, Bounded, Show, Read)
instance Enum FileAttributeType where
    toEnum 0     = FileAttributeTypeInvalid
{-# LINE 119 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 1      = FileAttributeTypeString
{-# LINE 120 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 2 = FileAttributeTypeByteString
{-# LINE 121 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 3     = FileAttributeTypeBool
{-# LINE 122 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 4      = FileAttributeTypeWord32
{-# LINE 123 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 5       = FileAttributeTypeInt32
{-# LINE 124 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 6      = FileAttributeTypeWord64
{-# LINE 125 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 7       = FileAttributeTypeInt64
{-# LINE 126 "System/GIO/File/FileAttribute.hsc" #-}
    toEnum 8      = FileAttributeTypeObject
{-# LINE 127 "System/GIO/File/FileAttribute.hsc" #-}
    
    fromEnum FileAttributeTypeInvalid    = 0
{-# LINE 129 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeString     = 1
{-# LINE 130 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeByteString = 2
{-# LINE 131 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeBool       = 3
{-# LINE 132 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeWord32     = 4
{-# LINE 133 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeInt32      = 5
{-# LINE 134 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeWord64     = 6
{-# LINE 135 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeInt64      = 7
{-# LINE 136 "System/GIO/File/FileAttribute.hsc" #-}
    fromEnum FileAttributeTypeObject     = 8
{-# LINE 137 "System/GIO/File/FileAttribute.hsc" #-}

data FileAttributeInfo =
    FileAttributeInfo
    { fileAttributeInfoName :: String
    , fileAttributeInfoType :: FileAttributeType
    , fileAttributeInfoFlags :: [FileAttributeInfoFlags]
    } deriving (Eq, Read, Show)

instance Storable FileAttributeInfo where
    sizeOf _ = (12)
{-# LINE 147 "System/GIO/File/FileAttribute.hsc" #-}
    alignment _ = alignment (undefined :: Ptr ())
    peek ptr = do
      retName <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr >>= peekUTFString
{-# LINE 150 "System/GIO/File/FileAttribute.hsc" #-}
      retType <- ((\hsc_ptr -> peekByteOff hsc_ptr 4) ptr :: IO CInt) >>= return . cToEnum
{-# LINE 151 "System/GIO/File/FileAttribute.hsc" #-}
      retFlags <- ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr :: IO CInt) >>= return . cToFlags
{-# LINE 152 "System/GIO/File/FileAttribute.hsc" #-}
      return $ FileAttributeInfo
               { fileAttributeInfoName = retName
               , fileAttributeInfoType = retType
               , fileAttributeInfoFlags = retFlags }

    poke _ = error "not implemented"

fileAttributeStandardType,
    fileAttributeStandardIsHidden,
    fileAttributeStandardIsBackup,
    fileAttributeStandardIsSymlink,
    fileAttributeStandardIsVirtual,
    fileAttributeStandardName,
    fileAttributeStandardDisplayName,
    fileAttributeStandardEditName,
    fileAttributeStandardCopyName,
    fileAttributeStandardIcon,
    fileAttributeStandardContentType,
    fileAttributeStandardFastContentType,
    fileAttributeStandardSize,
    fileAttributeStandardSymlinkTarget,
    fileAttributeStandardTargetURI,
    fileAttributeStandardSortOrder,
    fileAttributeEtagValue,
    fileAttributeIDFile,
    fileAttributeIDFilesystem,
    fileAttributeAccessCanRead,
    fileAttributeAccessCanWrite,
    fileAttributeAccessCanExecute,
    fileAttributeAccessCanDelete,
    fileAttributeAccessCanTrash,
    fileAttributeAccessCanRename,
    fileAttributeMountableCanMount,
    fileAttributeMountableCanUnmount,
    fileAttributeMountableCanEject,
    fileAttributeMountableUnixDevice,
    fileAttributeMountableHalUDI,
    fileAttributeTimeModified,
    fileAttributeTimeModifiedUSec,
    fileAttributeTimeAccess,
    fileAttributeTimeAccessUSec,
    fileAttributeTimeChanged,
    fileAttributeTimeChangedUSec,
    fileAttributeTimeCreated,
    fileAttributeTimeCreatedUSec,
    fileAttributeUnixDevice,
    fileAttributeUnixInode,
    fileAttributeUnixMode,
    fileAttributeUnixNLink,
    fileAttributeUnixUID,
    fileAttributeUnixGID,
    fileAttributeUnixRDev,
    fileAttributeUnixBlockSize,
    fileAttributeUnixBlocks,
    fileAttributeDosIsArchive,
    fileAttributeDosIsSystem,
    fileAttributeOwnerUser,
    fileAttributeOwnerUserReal,
    fileAttributeOwnerGroup,
    fileAttributeThumbnailPath,
    fileAttributeThumbnailingFailed,
    fileAttributeFilesystemSize,
    fileAttributeFilesystemFree,
    fileAttributeFilesystemType,
    fileAttributeFilesystemReadonly,
    fileAttributeGVfsBackend,
    fileAttributeSELinuxContext,
    fileAttributeTrashItemCount,
    fileAttributeFilesystemUsePreview,
    fileAttributeStandardDescription
    :: String
fileAttributeStandardType            = "standard::type"
{-# LINE 224 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardIsHidden        = "standard::is-hidden"
{-# LINE 225 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardIsBackup        = "standard::is-backup"
{-# LINE 226 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardIsSymlink       = "standard::is-symlink"
{-# LINE 227 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardIsVirtual       = "standard::is-virtual"
{-# LINE 228 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardName            = "standard::name"
{-# LINE 229 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardDisplayName     = "standard::display-name"
{-# LINE 230 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardEditName        = "standard::edit-name"
{-# LINE 231 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardCopyName        = "standard::copy-name"
{-# LINE 232 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardIcon            = "standard::icon"
{-# LINE 233 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardContentType     = "standard::content-type"
{-# LINE 234 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardFastContentType = "standard::fast-content-type"
{-# LINE 235 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardSize            = "standard::size"
{-# LINE 236 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardSymlinkTarget   = "standard::symlink-target"
{-# LINE 237 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardTargetURI       = "standard::target-uri"
{-# LINE 238 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardSortOrder       = "standard::sort-order"
{-# LINE 239 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeEtagValue               = "etag::value"
{-# LINE 240 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeIDFile                  = "id::file"
{-# LINE 241 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeIDFilesystem            = "id::filesystem"
{-# LINE 242 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanRead           = "access::can-read"
{-# LINE 243 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanWrite          = "access::can-write"
{-# LINE 244 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanExecute        = "access::can-execute"
{-# LINE 245 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanDelete         = "access::can-delete"
{-# LINE 246 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanTrash          = "access::can-trash"
{-# LINE 247 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeAccessCanRename         = "access::can-rename"
{-# LINE 248 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeMountableCanMount       = "mountable::can-mount"
{-# LINE 249 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeMountableCanUnmount     = "mountable::can-unmount"
{-# LINE 250 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeMountableCanEject       = "mountable::can-eject"
{-# LINE 251 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeMountableUnixDevice     = "mountable::unix-device"
{-# LINE 252 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeMountableHalUDI         = "mountable::hal-udi"
{-# LINE 253 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeModified            = "time::modified"
{-# LINE 254 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeModifiedUSec        = "time::modified-usec"
{-# LINE 255 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeAccess              = "time::access"
{-# LINE 256 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeAccessUSec          = "time::access-usec"
{-# LINE 257 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeChanged             = "time::changed"
{-# LINE 258 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeChangedUSec         = "time::changed-usec"
{-# LINE 259 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeCreated             = "time::created"
{-# LINE 260 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTimeCreatedUSec         = "time::created-usec"
{-# LINE 261 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixDevice              = "unix::device"
{-# LINE 262 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixInode               = "unix::inode"
{-# LINE 263 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixMode                = "unix::mode"
{-# LINE 264 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixNLink               = "unix::nlink"
{-# LINE 265 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixUID                 = "unix::uid"
{-# LINE 266 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixGID                 = "unix::gid"
{-# LINE 267 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixRDev                = "unix::rdev"
{-# LINE 268 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixBlockSize           = "unix::block-size"
{-# LINE 269 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeUnixBlocks              = "unix::blocks"
{-# LINE 270 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeDosIsArchive            = "dos::is-archive"
{-# LINE 271 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeDosIsSystem             = "dos::is-system"
{-# LINE 272 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeOwnerUser               = "owner::user"
{-# LINE 273 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeOwnerUserReal           = "owner::user-real"
{-# LINE 274 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeOwnerGroup              = "owner::group"
{-# LINE 275 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeThumbnailPath           = "thumbnail::path"
{-# LINE 276 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeThumbnailingFailed      = "thumbnail::failed"
{-# LINE 277 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeFilesystemSize          = "filesystem::size"
{-# LINE 278 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeFilesystemFree          = "filesystem::free"
{-# LINE 279 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeFilesystemType          = "filesystem::type"
{-# LINE 280 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeFilesystemReadonly      = "filesystem::readonly"
{-# LINE 281 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeGVfsBackend             = "gvfs::backend"
{-# LINE 282 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeSELinuxContext          = "selinux::context"
{-# LINE 283 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeTrashItemCount          = "trash::item-count"
{-# LINE 284 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeFilesystemUsePreview    = "filesystem::use-preview"
{-# LINE 285 "System/GIO/File/FileAttribute.hsc" #-}
fileAttributeStandardDescription     = "standard::description"
{-# LINE 286 "System/GIO/File/FileAttribute.hsc" #-}