-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstPbutils.Flags
    ( 

 -- * Flags
-- ** DiscovererSerializeFlags #flag:DiscovererSerializeFlags#

    DiscovererSerializeFlags(..)            ,




    ) 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.GI.Base.Signals as B.Signals
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


-- Flags DiscovererSerializeFlags
-- | You can use these flags to control what is serialized by
-- 'GI.GstPbutils.Objects.DiscovererInfo.discovererInfoToVariant'
-- 
-- /Since: 1.6/
data DiscovererSerializeFlags = 
      DiscovererSerializeFlagsBasic
    -- ^ Serialize only basic information, excluding
    -- caps, tags and miscellaneous information
    | DiscovererSerializeFlagsCaps
    -- ^ Serialize the caps for each stream
    | DiscovererSerializeFlagsTags
    -- ^ Serialize the tags for each stream
    | DiscovererSerializeFlagsMisc
    -- ^ Serialize miscellaneous information for each stream
    | DiscovererSerializeFlagsAll
    -- ^ Serialize all the available info, including
    -- caps, tags and miscellaneous information
    | AnotherDiscovererSerializeFlags Int
    -- ^ Catch-all for unknown values
    deriving (Int -> DiscovererSerializeFlags -> ShowS
[DiscovererSerializeFlags] -> ShowS
DiscovererSerializeFlags -> String
(Int -> DiscovererSerializeFlags -> ShowS)
-> (DiscovererSerializeFlags -> String)
-> ([DiscovererSerializeFlags] -> ShowS)
-> Show DiscovererSerializeFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DiscovererSerializeFlags] -> ShowS
$cshowList :: [DiscovererSerializeFlags] -> ShowS
show :: DiscovererSerializeFlags -> String
$cshow :: DiscovererSerializeFlags -> String
showsPrec :: Int -> DiscovererSerializeFlags -> ShowS
$cshowsPrec :: Int -> DiscovererSerializeFlags -> ShowS
Show, DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool
(DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool)
-> (DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool)
-> Eq DiscovererSerializeFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool
$c/= :: DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool
== :: DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool
$c== :: DiscovererSerializeFlags -> DiscovererSerializeFlags -> Bool
Eq)

instance P.Enum DiscovererSerializeFlags where
    fromEnum :: DiscovererSerializeFlags -> Int
fromEnum DiscovererSerializeFlagsBasic = 0
    fromEnum DiscovererSerializeFlagsCaps = 1
    fromEnum DiscovererSerializeFlagsTags = 2
    fromEnum DiscovererSerializeFlagsMisc = 4
    fromEnum DiscovererSerializeFlagsAll = 7
    fromEnum (AnotherDiscovererSerializeFlags k :: Int
k) = Int
k

    toEnum :: Int -> DiscovererSerializeFlags
toEnum 0 = DiscovererSerializeFlags
DiscovererSerializeFlagsBasic
    toEnum 1 = DiscovererSerializeFlags
DiscovererSerializeFlagsCaps
    toEnum 2 = DiscovererSerializeFlags
DiscovererSerializeFlagsTags
    toEnum 4 = DiscovererSerializeFlags
DiscovererSerializeFlagsMisc
    toEnum 7 = DiscovererSerializeFlags
DiscovererSerializeFlagsAll
    toEnum k :: Int
k = Int -> DiscovererSerializeFlags
AnotherDiscovererSerializeFlags Int
k

instance P.Ord DiscovererSerializeFlags where
    compare :: DiscovererSerializeFlags -> DiscovererSerializeFlags -> Ordering
compare a :: DiscovererSerializeFlags
a b :: DiscovererSerializeFlags
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (DiscovererSerializeFlags -> Int
forall a. Enum a => a -> Int
P.fromEnum DiscovererSerializeFlags
a) (DiscovererSerializeFlags -> Int
forall a. Enum a => a -> Int
P.fromEnum DiscovererSerializeFlags
b)

foreign import ccall "gst_discoverer_serialize_flags_get_type" c_gst_discoverer_serialize_flags_get_type :: 
    IO GType

instance BoxedFlags DiscovererSerializeFlags where
    boxedFlagsType :: Proxy DiscovererSerializeFlags -> IO GType
boxedFlagsType _ = IO GType
c_gst_discoverer_serialize_flags_get_type

instance IsGFlag DiscovererSerializeFlags