-- | 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.GstTag.Flags
    ( 

 -- * Flags
-- ** TagLicenseFlags #flag:TagLicenseFlags#

    TagLicenseFlags(..)                     ,




    ) 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.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 Control.Monad.IO.Class as MIO
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 TagLicenseFlags
-- | See http:\/\/creativecommons.org\/ns for more information.
data TagLicenseFlags = 
      TagLicenseFlagsPermitsReproduction
    -- ^ making multiple copies
    --     is allowed
    | TagLicenseFlagsPermitsDistribution
    -- ^ distribution, public display
    --     and public performance are allowed
    | TagLicenseFlagsPermitsDerivativeWorks
    -- ^ distribution of derivative
    --     works is allowed
    | TagLicenseFlagsPermitsSharing
    -- ^ commercial derivatives are allowed,
    --     but only non-commercial distribution is allowed
    | TagLicenseFlagsRequiresNotice
    -- ^ copyright and license notices
    --     must be kept intact
    | TagLicenseFlagsRequiresAttribution
    -- ^ credit must be given to
    --     copyright holder and\/or author
    | TagLicenseFlagsRequiresShareAlike
    -- ^ derivative works must be
    --     licensed under the same terms or compatible terms as the original work
    | TagLicenseFlagsRequiresSourceCode
    -- ^ source code (the preferred
    --     form for making modifications) must be provided when exercising some
    --     rights granted by the license
    | TagLicenseFlagsRequiresCopyleft
    -- ^ derivative and combined works
    --     must be licensed under specified terms, similar to those of the original
    --     work
    | TagLicenseFlagsRequiresLesserCopyleft
    -- ^ derivative works must be
    --     licensed under specified terms, with at least the same conditions as
    --     the original work; combinations with the work may be licensed under
    --     different terms
    | TagLicenseFlagsProhibitsCommercialUse
    -- ^ exercising rights for
    --     commercial purposes is prohibited
    | TagLicenseFlagsProhibitsHighIncomeNationUse
    -- ^ use in a
    --     non-developing country is prohibited
    | TagLicenseFlagsCreativeCommonsLicense
    -- ^ this license was created
    --     by the Creative Commons project
    | TagLicenseFlagsFreeSoftwareFoundationLicense
    -- ^ this license was
    --     created by the Free Software Foundation (FSF)
    | AnotherTagLicenseFlags Int
    -- ^ Catch-all for unknown values
    deriving (Int -> TagLicenseFlags -> ShowS
[TagLicenseFlags] -> ShowS
TagLicenseFlags -> String
(Int -> TagLicenseFlags -> ShowS)
-> (TagLicenseFlags -> String)
-> ([TagLicenseFlags] -> ShowS)
-> Show TagLicenseFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TagLicenseFlags] -> ShowS
$cshowList :: [TagLicenseFlags] -> ShowS
show :: TagLicenseFlags -> String
$cshow :: TagLicenseFlags -> String
showsPrec :: Int -> TagLicenseFlags -> ShowS
$cshowsPrec :: Int -> TagLicenseFlags -> ShowS
Show, TagLicenseFlags -> TagLicenseFlags -> Bool
(TagLicenseFlags -> TagLicenseFlags -> Bool)
-> (TagLicenseFlags -> TagLicenseFlags -> Bool)
-> Eq TagLicenseFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TagLicenseFlags -> TagLicenseFlags -> Bool
$c/= :: TagLicenseFlags -> TagLicenseFlags -> Bool
== :: TagLicenseFlags -> TagLicenseFlags -> Bool
$c== :: TagLicenseFlags -> TagLicenseFlags -> Bool
Eq)

instance P.Enum TagLicenseFlags where
    fromEnum :: TagLicenseFlags -> Int
fromEnum TagLicenseFlags
TagLicenseFlagsPermitsReproduction = Int
1
    fromEnum TagLicenseFlags
TagLicenseFlagsPermitsDistribution = Int
2
    fromEnum TagLicenseFlags
TagLicenseFlagsPermitsDerivativeWorks = Int
4
    fromEnum TagLicenseFlags
TagLicenseFlagsPermitsSharing = Int
8
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresNotice = Int
256
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresAttribution = Int
512
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresShareAlike = Int
1024
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresSourceCode = Int
2048
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresCopyleft = Int
4096
    fromEnum TagLicenseFlags
TagLicenseFlagsRequiresLesserCopyleft = Int
8192
    fromEnum TagLicenseFlags
TagLicenseFlagsProhibitsCommercialUse = Int
65536
    fromEnum TagLicenseFlags
TagLicenseFlagsProhibitsHighIncomeNationUse = Int
131072
    fromEnum TagLicenseFlags
TagLicenseFlagsCreativeCommonsLicense = Int
16777216
    fromEnum TagLicenseFlags
TagLicenseFlagsFreeSoftwareFoundationLicense = Int
33554432
    fromEnum (AnotherTagLicenseFlags Int
k) = Int
k

    toEnum :: Int -> TagLicenseFlags
toEnum Int
1 = TagLicenseFlags
TagLicenseFlagsPermitsReproduction
    toEnum Int
2 = TagLicenseFlags
TagLicenseFlagsPermitsDistribution
    toEnum Int
4 = TagLicenseFlags
TagLicenseFlagsPermitsDerivativeWorks
    toEnum Int
8 = TagLicenseFlags
TagLicenseFlagsPermitsSharing
    toEnum Int
256 = TagLicenseFlags
TagLicenseFlagsRequiresNotice
    toEnum Int
512 = TagLicenseFlags
TagLicenseFlagsRequiresAttribution
    toEnum Int
1024 = TagLicenseFlags
TagLicenseFlagsRequiresShareAlike
    toEnum Int
2048 = TagLicenseFlags
TagLicenseFlagsRequiresSourceCode
    toEnum Int
4096 = TagLicenseFlags
TagLicenseFlagsRequiresCopyleft
    toEnum Int
8192 = TagLicenseFlags
TagLicenseFlagsRequiresLesserCopyleft
    toEnum Int
65536 = TagLicenseFlags
TagLicenseFlagsProhibitsCommercialUse
    toEnum Int
131072 = TagLicenseFlags
TagLicenseFlagsProhibitsHighIncomeNationUse
    toEnum Int
16777216 = TagLicenseFlags
TagLicenseFlagsCreativeCommonsLicense
    toEnum Int
33554432 = TagLicenseFlags
TagLicenseFlagsFreeSoftwareFoundationLicense
    toEnum Int
k = Int -> TagLicenseFlags
AnotherTagLicenseFlags Int
k

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

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

foreign import ccall "gst_tag_license_flags_get_type" c_gst_tag_license_flags_get_type :: 
    IO GType

instance B.Types.TypedObject TagLicenseFlags where
    glibType :: IO GType
glibType = IO GType
c_gst_tag_license_flags_get_type

instance B.Types.BoxedFlags TagLicenseFlags

instance IsGFlag TagLicenseFlags