-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- 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.GstApp.Enums
    ( 

 -- * Enumerations


-- ** AppLeakyType #enum:AppLeakyType#

    AppLeakyType(..)                        ,


-- ** AppStreamType #enum:AppStreamType#

    AppStreamType(..)                       ,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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 Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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
import qualified GHC.Records as R


-- Enum AppStreamType
-- | The stream type.
data AppStreamType = 
      AppStreamTypeStream
    -- ^ No seeking is supported in the stream, such as a
    -- live stream.
    | AppStreamTypeSeekable
    -- ^ The stream is seekable but seeking might not
    -- be very fast, such as data from a webserver.
    | AppStreamTypeRandomAccess
    -- ^ The stream is seekable and seeking is fast,
    -- such as in a local file.
    | AnotherAppStreamType Int
    -- ^ Catch-all for unknown values
    deriving (Int -> AppStreamType -> ShowS
[AppStreamType] -> ShowS
AppStreamType -> String
(Int -> AppStreamType -> ShowS)
-> (AppStreamType -> String)
-> ([AppStreamType] -> ShowS)
-> Show AppStreamType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AppStreamType -> ShowS
showsPrec :: Int -> AppStreamType -> ShowS
$cshow :: AppStreamType -> String
show :: AppStreamType -> String
$cshowList :: [AppStreamType] -> ShowS
showList :: [AppStreamType] -> ShowS
Show, AppStreamType -> AppStreamType -> Bool
(AppStreamType -> AppStreamType -> Bool)
-> (AppStreamType -> AppStreamType -> Bool) -> Eq AppStreamType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AppStreamType -> AppStreamType -> Bool
== :: AppStreamType -> AppStreamType -> Bool
$c/= :: AppStreamType -> AppStreamType -> Bool
/= :: AppStreamType -> AppStreamType -> Bool
Eq)

instance P.Enum AppStreamType where
    fromEnum :: AppStreamType -> Int
fromEnum AppStreamType
AppStreamTypeStream = Int
0
    fromEnum AppStreamType
AppStreamTypeSeekable = Int
1
    fromEnum AppStreamType
AppStreamTypeRandomAccess = Int
2
    fromEnum (AnotherAppStreamType Int
k) = Int
k

    toEnum :: Int -> AppStreamType
toEnum Int
0 = AppStreamType
AppStreamTypeStream
    toEnum Int
1 = AppStreamType
AppStreamTypeSeekable
    toEnum Int
2 = AppStreamType
AppStreamTypeRandomAccess
    toEnum Int
k = Int -> AppStreamType
AnotherAppStreamType Int
k

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

type instance O.ParentTypes AppStreamType = '[]
instance O.HasParentTypes AppStreamType

foreign import ccall "gst_app_stream_type_get_type" c_gst_app_stream_type_get_type :: 
    IO GType

instance B.Types.TypedObject AppStreamType where
    glibType :: IO GType
glibType = IO GType
c_gst_app_stream_type_get_type

instance B.Types.BoxedEnum AppStreamType

-- Enum AppLeakyType
-- | Buffer dropping scheme to avoid the element\'s internal queue to block when
-- full.
-- 
-- /Since: 1.20/
data AppLeakyType = 
      AppLeakyTypeNone
    -- ^ Not Leaky
    | AppLeakyTypeUpstream
    -- ^ Leaky on upstream (new buffers)
    | AppLeakyTypeDownstream
    -- ^ Leaky on downstream (old buffers)
    | AnotherAppLeakyType Int
    -- ^ Catch-all for unknown values
    deriving (Int -> AppLeakyType -> ShowS
[AppLeakyType] -> ShowS
AppLeakyType -> String
(Int -> AppLeakyType -> ShowS)
-> (AppLeakyType -> String)
-> ([AppLeakyType] -> ShowS)
-> Show AppLeakyType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AppLeakyType -> ShowS
showsPrec :: Int -> AppLeakyType -> ShowS
$cshow :: AppLeakyType -> String
show :: AppLeakyType -> String
$cshowList :: [AppLeakyType] -> ShowS
showList :: [AppLeakyType] -> ShowS
Show, AppLeakyType -> AppLeakyType -> Bool
(AppLeakyType -> AppLeakyType -> Bool)
-> (AppLeakyType -> AppLeakyType -> Bool) -> Eq AppLeakyType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AppLeakyType -> AppLeakyType -> Bool
== :: AppLeakyType -> AppLeakyType -> Bool
$c/= :: AppLeakyType -> AppLeakyType -> Bool
/= :: AppLeakyType -> AppLeakyType -> Bool
Eq)

instance P.Enum AppLeakyType where
    fromEnum :: AppLeakyType -> Int
fromEnum AppLeakyType
AppLeakyTypeNone = Int
0
    fromEnum AppLeakyType
AppLeakyTypeUpstream = Int
1
    fromEnum AppLeakyType
AppLeakyTypeDownstream = Int
2
    fromEnum (AnotherAppLeakyType Int
k) = Int
k

    toEnum :: Int -> AppLeakyType
toEnum Int
0 = AppLeakyType
AppLeakyTypeNone
    toEnum Int
1 = AppLeakyType
AppLeakyTypeUpstream
    toEnum Int
2 = AppLeakyType
AppLeakyTypeDownstream
    toEnum Int
k = Int -> AppLeakyType
AnotherAppLeakyType Int
k

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

type instance O.ParentTypes AppLeakyType = '[]
instance O.HasParentTypes AppLeakyType

foreign import ccall "gst_app_leaky_type_get_type" c_gst_app_leaky_type_get_type :: 
    IO GType

instance B.Types.TypedObject AppLeakyType where
    glibType :: IO GType
glibType = IO GType
c_gst_app_leaky_type_get_type

instance B.Types.BoxedEnum AppLeakyType