{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
-}

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

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.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 (Show, Eq)

instance P.Enum TagLicenseFlags where
    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) = k

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

instance P.Ord TagLicenseFlags where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_tag_license_flags_get_type" c_gst_tag_license_flags_get_type ::
    IO GType

instance BoxedFlags TagLicenseFlags where
    boxedFlagsType _ = c_gst_tag_license_flags_get_type

instance IsGFlag TagLicenseFlags