{-# LINE 1 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

{-# LINE 2 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

{-# LINE 3 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

-- | <http://library.gnome.org/devel/gobject/stable/gobject-Enumeration-and-Flag-Types.html>

module Bindings.GObject.EnumerationAndFlagTypes where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 8 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
import Bindings.GLib
import Bindings.GObject.TypeInformation

data C'GEnumClass = C'GEnumClass

{-# LINE 12 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
data C'GFlagsClass = C'GFlagsClass

{-# LINE 13 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_ENUM_CLASS_TYPE" c'G_ENUM_CLASS_TYPE
  :: Ptr C'GEnumClass -> C'GType

{-# LINE 14 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_ENUM_CLASS_TYPE_NAME" c'G_ENUM_CLASS_TYPE_NAME
  :: Ptr C'GEnumClass -> Ptr C'gchar

{-# LINE 15 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_TYPE_IS_ENUM" c'G_TYPE_IS_ENUM
  :: C'GType -> C'gboolean

{-# LINE 16 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_ENUM_CLASS" c'G_ENUM_CLASS
  :: Ptr a -> Ptr C'GEnumClass

{-# LINE 17 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_IS_ENUM_CLASS" c'G_IS_ENUM_CLASS
  :: Ptr a -> C'gboolean

{-# LINE 18 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_TYPE_IS_FLAGS" c'G_TYPE_IS_FLAGS
  :: C'GType -> IO C'gboolean

{-# LINE 19 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_FLAGS_CLASS" c'G_FLAGS_CLASS
  :: Ptr a -> Ptr C'GFlagsClass

{-# LINE 20 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_IS_FLAGS_CLASS" c'G_IS_FLAGS_CLASS
  :: Ptr a -> C'gboolean

{-# LINE 21 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_FLAGS_CLASS_TYPE" c'G_FLAGS_CLASS_TYPE
  :: Ptr C'GFlagsClass -> C'GType

{-# LINE 22 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "inline_G_FLAGS_CLASS_TYPE_NAME" c'G_FLAGS_CLASS_TYPE_NAME
  :: Ptr C'GFlagsClass -> IO (Ptr C'gchar)

{-# LINE 23 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

data C'GEnumValue = C'GEnumValue{
{-# LINE 25 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

  c'GEnumValue'value :: C'gint
{-# LINE 26 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
,
  c'GEnumValue'value_name :: Ptr C'gchar
{-# LINE 27 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
,
  c'GEnumValue'value_nick :: Ptr C'gchar
{-# LINE 28 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GEnumValue where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GEnumValue v0 v1 v2
  poke p (C'GEnumValue v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 29 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

data C'GFlagsValue = C'GFlagsValue{
{-# LINE 31 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

  c'GFlagsValue'value :: C'gint
{-# LINE 32 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
,
  c'GFlagsValue'value_name :: Ptr C'gchar
{-# LINE 33 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
,
  c'GFlagsValue'value_nick :: Ptr C'gchar
{-# LINE 34 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GFlagsValue where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GFlagsValue v0 v1 v2
  poke p (C'GFlagsValue v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 35 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}

foreign import ccall "g_enum_get_value" c'g_enum_get_value
  :: Ptr C'GEnumClass -> C'gint -> IO (Ptr C'GEnumValue)
foreign import ccall "&g_enum_get_value" p'g_enum_get_value
  :: FunPtr (Ptr C'GEnumClass -> C'gint -> IO (Ptr C'GEnumValue))

{-# LINE 37 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_enum_get_value_by_name" c'g_enum_get_value_by_name
  :: Ptr C'GEnumClass -> Ptr C'gchar -> IO (Ptr C'GEnumValue)
foreign import ccall "&g_enum_get_value_by_name" p'g_enum_get_value_by_name
  :: FunPtr (Ptr C'GEnumClass -> Ptr C'gchar -> IO (Ptr C'GEnumValue))

{-# LINE 38 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_enum_get_value_by_nick" c'g_enum_get_value_by_nick
  :: Ptr C'GEnumClass -> Ptr C'gchar -> IO (Ptr C'GEnumValue)
foreign import ccall "&g_enum_get_value_by_nick" p'g_enum_get_value_by_nick
  :: FunPtr (Ptr C'GEnumClass -> Ptr C'gchar -> IO (Ptr C'GEnumValue))

{-# LINE 39 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_flags_get_first_value" c'g_flags_get_first_value
  :: Ptr C'GFlagsClass -> C'guint -> IO (Ptr C'GFlagsValue)
foreign import ccall "&g_flags_get_first_value" p'g_flags_get_first_value
  :: FunPtr (Ptr C'GFlagsClass -> C'guint -> IO (Ptr C'GFlagsValue))

{-# LINE 40 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_flags_get_value_by_name" c'g_flags_get_value_by_name
  :: Ptr C'GFlagsClass -> Ptr C'gchar -> IO (Ptr C'GFlagsValue)
foreign import ccall "&g_flags_get_value_by_name" p'g_flags_get_value_by_name
  :: FunPtr (Ptr C'GFlagsClass -> Ptr C'gchar -> IO (Ptr C'GFlagsValue))

{-# LINE 41 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_flags_get_value_by_nick" c'g_flags_get_value_by_nick
  :: Ptr C'GFlagsClass -> Ptr C'gchar -> IO (Ptr C'GFlagsValue)
foreign import ccall "&g_flags_get_value_by_nick" p'g_flags_get_value_by_nick
  :: FunPtr (Ptr C'GFlagsClass -> Ptr C'gchar -> IO (Ptr C'GFlagsValue))

{-# LINE 42 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_enum_register_static" c'g_enum_register_static
  :: Ptr C'gchar -> Ptr C'GEnumValue -> IO C'GType
foreign import ccall "&g_enum_register_static" p'g_enum_register_static
  :: FunPtr (Ptr C'gchar -> Ptr C'GEnumValue -> IO C'GType)

{-# LINE 43 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_flags_register_static" c'g_flags_register_static
  :: Ptr C'gchar -> Ptr C'GFlagsValue -> IO C'GType
foreign import ccall "&g_flags_register_static" p'g_flags_register_static
  :: FunPtr (Ptr C'gchar -> Ptr C'GFlagsValue -> IO C'GType)

{-# LINE 44 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_enum_complete_type_info" c'g_enum_complete_type_info
  :: C'GType -> Ptr C'GTypeInfo -> Ptr C'GEnumValue -> IO ()
foreign import ccall "&g_enum_complete_type_info" p'g_enum_complete_type_info
  :: FunPtr (C'GType -> Ptr C'GTypeInfo -> Ptr C'GEnumValue -> IO ())

{-# LINE 45 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}
foreign import ccall "g_flags_complete_type_info" c'g_flags_complete_type_info
  :: C'GType -> Ptr C'GTypeInfo -> Ptr C'GFlagsValue -> IO ()
foreign import ccall "&g_flags_complete_type_info" p'g_flags_complete_type_info
  :: FunPtr (C'GType -> Ptr C'GTypeInfo -> Ptr C'GFlagsValue -> IO ())

{-# LINE 46 "src/Bindings/GObject/EnumerationAndFlagTypes.hsc" #-}