-- | 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.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 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 TagLicenseFlagsPermitsReproduction = 1
    fromEnum TagLicenseFlagsPermitsDistribution = 2
    fromEnum TagLicenseFlagsPermitsDerivativeWorks = 4
    fromEnum TagLicenseFlagsPermitsSharing = 8
    fromEnum TagLicenseFlagsRequiresNotice = 256
    fromEnum TagLicenseFlagsRequiresAttribution = 512
    fromEnum TagLicenseFlagsRequiresShareAlike = 1024
    fromEnum TagLicenseFlagsRequiresSourceCode = 2048
    fromEnum TagLicenseFlagsRequiresCopyleft = 4096
    fromEnum TagLicenseFlagsRequiresLesserCopyleft = 8192
    fromEnum TagLicenseFlagsProhibitsCommercialUse = 65536
    fromEnum TagLicenseFlagsProhibitsHighIncomeNationUse = 131072
    fromEnum TagLicenseFlagsCreativeCommonsLicense = 16777216
    fromEnum TagLicenseFlagsFreeSoftwareFoundationLicense = 33554432
    fromEnum (AnotherTagLicenseFlags k :: Int
k) = Int
k

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

instance P.Ord TagLicenseFlags where
    compare :: TagLicenseFlags -> TagLicenseFlags -> Ordering
compare a :: TagLicenseFlags
a b :: 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)

foreign import ccall "gst_tag_license_flags_get_type" c_gst_tag_license_flags_get_type :: 
    IO GType

instance BoxedFlags TagLicenseFlags where
    boxedFlagsType :: Proxy TagLicenseFlags -> IO GType
boxedFlagsType _ = IO GType
c_gst_tag_license_flags_get_type

instance IsGFlag TagLicenseFlags