{-|
Module      : Language.JVM.AccessFlag
Copyright   : (c) Christian Gram Kalhauge, 2017
License     : MIT
Maintainer  : kalhuage@cs.ucla.edu

Contains the AccessFlags used in the different modules.
-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
module Language.JVM.AccessFlag
  ( MAccessFlag(..)
  , mflags
  , FAccessFlag(..)
  , fflags
  , CAccessFlag(..)
  , cflags
  , ICAccessFlag(..)
  , icflags
  , PAccessFlag(..)
  , pflags
  )
where

import           Language.JVM.Utils

import           GHC.Generics                   ( Generic )
import           Control.DeepSeq                ( NFData )

-- | Access flags for the 'Language.JVM.Method.Method'
data MAccessFlag
  = MPublic
  | MPrivate
  | MProtected
  | MStatic
  | MFinal
  | MSynchronized
  | MBridge
  | MVarargs
  | MNative
  | MAbstract
  | MStrictFP
  | MSynthetic
  deriving (Eq MAccessFlag
Eq MAccessFlag
-> (MAccessFlag -> MAccessFlag -> Ordering)
-> (MAccessFlag -> MAccessFlag -> Bool)
-> (MAccessFlag -> MAccessFlag -> Bool)
-> (MAccessFlag -> MAccessFlag -> Bool)
-> (MAccessFlag -> MAccessFlag -> Bool)
-> (MAccessFlag -> MAccessFlag -> MAccessFlag)
-> (MAccessFlag -> MAccessFlag -> MAccessFlag)
-> Ord MAccessFlag
MAccessFlag -> MAccessFlag -> Bool
MAccessFlag -> MAccessFlag -> Ordering
MAccessFlag -> MAccessFlag -> MAccessFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MAccessFlag -> MAccessFlag -> MAccessFlag
$cmin :: MAccessFlag -> MAccessFlag -> MAccessFlag
max :: MAccessFlag -> MAccessFlag -> MAccessFlag
$cmax :: MAccessFlag -> MAccessFlag -> MAccessFlag
>= :: MAccessFlag -> MAccessFlag -> Bool
$c>= :: MAccessFlag -> MAccessFlag -> Bool
> :: MAccessFlag -> MAccessFlag -> Bool
$c> :: MAccessFlag -> MAccessFlag -> Bool
<= :: MAccessFlag -> MAccessFlag -> Bool
$c<= :: MAccessFlag -> MAccessFlag -> Bool
< :: MAccessFlag -> MAccessFlag -> Bool
$c< :: MAccessFlag -> MAccessFlag -> Bool
compare :: MAccessFlag -> MAccessFlag -> Ordering
$ccompare :: MAccessFlag -> MAccessFlag -> Ordering
$cp1Ord :: Eq MAccessFlag
Ord, Int -> MAccessFlag -> ShowS
[MAccessFlag] -> ShowS
MAccessFlag -> String
(Int -> MAccessFlag -> ShowS)
-> (MAccessFlag -> String)
-> ([MAccessFlag] -> ShowS)
-> Show MAccessFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MAccessFlag] -> ShowS
$cshowList :: [MAccessFlag] -> ShowS
show :: MAccessFlag -> String
$cshow :: MAccessFlag -> String
showsPrec :: Int -> MAccessFlag -> ShowS
$cshowsPrec :: Int -> MAccessFlag -> ShowS
Show, MAccessFlag -> MAccessFlag -> Bool
(MAccessFlag -> MAccessFlag -> Bool)
-> (MAccessFlag -> MAccessFlag -> Bool) -> Eq MAccessFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MAccessFlag -> MAccessFlag -> Bool
$c/= :: MAccessFlag -> MAccessFlag -> Bool
== :: MAccessFlag -> MAccessFlag -> Bool
$c== :: MAccessFlag -> MAccessFlag -> Bool
Eq, MAccessFlag -> ()
(MAccessFlag -> ()) -> NFData MAccessFlag
forall a. (a -> ()) -> NFData a
rnf :: MAccessFlag -> ()
$crnf :: MAccessFlag -> ()
NFData, (forall x. MAccessFlag -> Rep MAccessFlag x)
-> (forall x. Rep MAccessFlag x -> MAccessFlag)
-> Generic MAccessFlag
forall x. Rep MAccessFlag x -> MAccessFlag
forall x. MAccessFlag -> Rep MAccessFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MAccessFlag x -> MAccessFlag
$cfrom :: forall x. MAccessFlag -> Rep MAccessFlag x
Generic)

-- | The 'Enumish' mapping of the 'MAccessFlag'
mflags :: [(Int, MAccessFlag)]
mflags :: [(Int, MAccessFlag)]
mflags =
  [ (Int
0 , MAccessFlag
MPublic)
  , (Int
1 , MAccessFlag
MPrivate)
  , (Int
2 , MAccessFlag
MProtected)
  , (Int
3 , MAccessFlag
MStatic)
  , (Int
4 , MAccessFlag
MFinal)
  , (Int
5 , MAccessFlag
MSynchronized)
  , (Int
6 , MAccessFlag
MBridge)
  , (Int
7 , MAccessFlag
MVarargs)
  , (Int
8 , MAccessFlag
MNative)
  , (Int
10, MAccessFlag
MAbstract)
  , (Int
11, MAccessFlag
MStrictFP)
  , (Int
12, MAccessFlag
MSynthetic)
  ]

instance Enumish MAccessFlag where
  inOrder :: [(Int, MAccessFlag)]
inOrder = [(Int, MAccessFlag)]
mflags

-- | Access flags for the 'Language.JVM.ClassFile.ClassFile'
data CAccessFlag
  = CPublic
  | CFinal
  | CSuper
  | CInterface
  | CAbstract
  | CSynthetic
  | CAnnotation
  | CEnum
  | CModule
  deriving (Eq CAccessFlag
Eq CAccessFlag
-> (CAccessFlag -> CAccessFlag -> Ordering)
-> (CAccessFlag -> CAccessFlag -> Bool)
-> (CAccessFlag -> CAccessFlag -> Bool)
-> (CAccessFlag -> CAccessFlag -> Bool)
-> (CAccessFlag -> CAccessFlag -> Bool)
-> (CAccessFlag -> CAccessFlag -> CAccessFlag)
-> (CAccessFlag -> CAccessFlag -> CAccessFlag)
-> Ord CAccessFlag
CAccessFlag -> CAccessFlag -> Bool
CAccessFlag -> CAccessFlag -> Ordering
CAccessFlag -> CAccessFlag -> CAccessFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CAccessFlag -> CAccessFlag -> CAccessFlag
$cmin :: CAccessFlag -> CAccessFlag -> CAccessFlag
max :: CAccessFlag -> CAccessFlag -> CAccessFlag
$cmax :: CAccessFlag -> CAccessFlag -> CAccessFlag
>= :: CAccessFlag -> CAccessFlag -> Bool
$c>= :: CAccessFlag -> CAccessFlag -> Bool
> :: CAccessFlag -> CAccessFlag -> Bool
$c> :: CAccessFlag -> CAccessFlag -> Bool
<= :: CAccessFlag -> CAccessFlag -> Bool
$c<= :: CAccessFlag -> CAccessFlag -> Bool
< :: CAccessFlag -> CAccessFlag -> Bool
$c< :: CAccessFlag -> CAccessFlag -> Bool
compare :: CAccessFlag -> CAccessFlag -> Ordering
$ccompare :: CAccessFlag -> CAccessFlag -> Ordering
$cp1Ord :: Eq CAccessFlag
Ord, Int -> CAccessFlag -> ShowS
[CAccessFlag] -> ShowS
CAccessFlag -> String
(Int -> CAccessFlag -> ShowS)
-> (CAccessFlag -> String)
-> ([CAccessFlag] -> ShowS)
-> Show CAccessFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CAccessFlag] -> ShowS
$cshowList :: [CAccessFlag] -> ShowS
show :: CAccessFlag -> String
$cshow :: CAccessFlag -> String
showsPrec :: Int -> CAccessFlag -> ShowS
$cshowsPrec :: Int -> CAccessFlag -> ShowS
Show, CAccessFlag -> CAccessFlag -> Bool
(CAccessFlag -> CAccessFlag -> Bool)
-> (CAccessFlag -> CAccessFlag -> Bool) -> Eq CAccessFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CAccessFlag -> CAccessFlag -> Bool
$c/= :: CAccessFlag -> CAccessFlag -> Bool
== :: CAccessFlag -> CAccessFlag -> Bool
$c== :: CAccessFlag -> CAccessFlag -> Bool
Eq, CAccessFlag -> ()
(CAccessFlag -> ()) -> NFData CAccessFlag
forall a. (a -> ()) -> NFData a
rnf :: CAccessFlag -> ()
$crnf :: CAccessFlag -> ()
NFData, (forall x. CAccessFlag -> Rep CAccessFlag x)
-> (forall x. Rep CAccessFlag x -> CAccessFlag)
-> Generic CAccessFlag
forall x. Rep CAccessFlag x -> CAccessFlag
forall x. CAccessFlag -> Rep CAccessFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CAccessFlag x -> CAccessFlag
$cfrom :: forall x. CAccessFlag -> Rep CAccessFlag x
Generic)

-- | The 'Enumish' mapping of the 'CAccessFlag'
cflags :: [(Int, CAccessFlag)]
cflags :: [(Int, CAccessFlag)]
cflags =
  [ (Int
0 , CAccessFlag
CPublic)
  , (Int
4 , CAccessFlag
CFinal)
  , (Int
5 , CAccessFlag
CSuper)
  , (Int
9 , CAccessFlag
CInterface)
  , (Int
10, CAccessFlag
CAbstract)
  , (Int
12, CAccessFlag
CSynthetic)
  , (Int
13, CAccessFlag
CAnnotation)
  , (Int
14, CAccessFlag
CEnum)
  , (Int
15, CAccessFlag
CModule)
  ]

instance Enumish CAccessFlag where
  inOrder :: [(Int, CAccessFlag)]
inOrder = [(Int, CAccessFlag)]
cflags


-- | Access flags for the 'Language.JVM.Attribute.InnerClass'
data ICAccessFlag
  = ICPublic
  | ICPrivate
  | ICProtected
  | ICStatic
  | ICFinal
  | ICInterface
  | ICAbstract
  | ICSynthetic
  | ICAnnotation
  | ICEnum
  deriving (Eq ICAccessFlag
Eq ICAccessFlag
-> (ICAccessFlag -> ICAccessFlag -> Ordering)
-> (ICAccessFlag -> ICAccessFlag -> Bool)
-> (ICAccessFlag -> ICAccessFlag -> Bool)
-> (ICAccessFlag -> ICAccessFlag -> Bool)
-> (ICAccessFlag -> ICAccessFlag -> Bool)
-> (ICAccessFlag -> ICAccessFlag -> ICAccessFlag)
-> (ICAccessFlag -> ICAccessFlag -> ICAccessFlag)
-> Ord ICAccessFlag
ICAccessFlag -> ICAccessFlag -> Bool
ICAccessFlag -> ICAccessFlag -> Ordering
ICAccessFlag -> ICAccessFlag -> ICAccessFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ICAccessFlag -> ICAccessFlag -> ICAccessFlag
$cmin :: ICAccessFlag -> ICAccessFlag -> ICAccessFlag
max :: ICAccessFlag -> ICAccessFlag -> ICAccessFlag
$cmax :: ICAccessFlag -> ICAccessFlag -> ICAccessFlag
>= :: ICAccessFlag -> ICAccessFlag -> Bool
$c>= :: ICAccessFlag -> ICAccessFlag -> Bool
> :: ICAccessFlag -> ICAccessFlag -> Bool
$c> :: ICAccessFlag -> ICAccessFlag -> Bool
<= :: ICAccessFlag -> ICAccessFlag -> Bool
$c<= :: ICAccessFlag -> ICAccessFlag -> Bool
< :: ICAccessFlag -> ICAccessFlag -> Bool
$c< :: ICAccessFlag -> ICAccessFlag -> Bool
compare :: ICAccessFlag -> ICAccessFlag -> Ordering
$ccompare :: ICAccessFlag -> ICAccessFlag -> Ordering
$cp1Ord :: Eq ICAccessFlag
Ord, Int -> ICAccessFlag -> ShowS
[ICAccessFlag] -> ShowS
ICAccessFlag -> String
(Int -> ICAccessFlag -> ShowS)
-> (ICAccessFlag -> String)
-> ([ICAccessFlag] -> ShowS)
-> Show ICAccessFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ICAccessFlag] -> ShowS
$cshowList :: [ICAccessFlag] -> ShowS
show :: ICAccessFlag -> String
$cshow :: ICAccessFlag -> String
showsPrec :: Int -> ICAccessFlag -> ShowS
$cshowsPrec :: Int -> ICAccessFlag -> ShowS
Show, ICAccessFlag -> ICAccessFlag -> Bool
(ICAccessFlag -> ICAccessFlag -> Bool)
-> (ICAccessFlag -> ICAccessFlag -> Bool) -> Eq ICAccessFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ICAccessFlag -> ICAccessFlag -> Bool
$c/= :: ICAccessFlag -> ICAccessFlag -> Bool
== :: ICAccessFlag -> ICAccessFlag -> Bool
$c== :: ICAccessFlag -> ICAccessFlag -> Bool
Eq, ICAccessFlag -> ()
(ICAccessFlag -> ()) -> NFData ICAccessFlag
forall a. (a -> ()) -> NFData a
rnf :: ICAccessFlag -> ()
$crnf :: ICAccessFlag -> ()
NFData, (forall x. ICAccessFlag -> Rep ICAccessFlag x)
-> (forall x. Rep ICAccessFlag x -> ICAccessFlag)
-> Generic ICAccessFlag
forall x. Rep ICAccessFlag x -> ICAccessFlag
forall x. ICAccessFlag -> Rep ICAccessFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ICAccessFlag x -> ICAccessFlag
$cfrom :: forall x. ICAccessFlag -> Rep ICAccessFlag x
Generic)

-- | The 'Enumish' mapping of the 'CAccessFlag'
icflags :: [(Int, ICAccessFlag)]
icflags :: [(Int, ICAccessFlag)]
icflags =
  [ (Int
0 , ICAccessFlag
ICPublic)
  , (Int
1 , ICAccessFlag
ICPrivate)
  , (Int
2 , ICAccessFlag
ICProtected)
  , (Int
3 , ICAccessFlag
ICStatic)
  , (Int
4 , ICAccessFlag
ICFinal)
  , (Int
9 , ICAccessFlag
ICInterface)
  , (Int
10, ICAccessFlag
ICAbstract)
  , (Int
12, ICAccessFlag
ICSynthetic)
  , (Int
13, ICAccessFlag
ICAnnotation)
  , (Int
14, ICAccessFlag
ICEnum)
  ]

instance Enumish ICAccessFlag where
  inOrder :: [(Int, ICAccessFlag)]
inOrder = [(Int, ICAccessFlag)]
icflags


-- | Access flags for the 'Language.JVM.Field.Field'
data FAccessFlag
  = FPublic
  | FPrivate
  | FProtected
  | FStatic
  | FFinal
  | FVolatile
  | FTransient
  | FSynthetic
  | FEnum
  deriving (Eq FAccessFlag
Eq FAccessFlag
-> (FAccessFlag -> FAccessFlag -> Ordering)
-> (FAccessFlag -> FAccessFlag -> Bool)
-> (FAccessFlag -> FAccessFlag -> Bool)
-> (FAccessFlag -> FAccessFlag -> Bool)
-> (FAccessFlag -> FAccessFlag -> Bool)
-> (FAccessFlag -> FAccessFlag -> FAccessFlag)
-> (FAccessFlag -> FAccessFlag -> FAccessFlag)
-> Ord FAccessFlag
FAccessFlag -> FAccessFlag -> Bool
FAccessFlag -> FAccessFlag -> Ordering
FAccessFlag -> FAccessFlag -> FAccessFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FAccessFlag -> FAccessFlag -> FAccessFlag
$cmin :: FAccessFlag -> FAccessFlag -> FAccessFlag
max :: FAccessFlag -> FAccessFlag -> FAccessFlag
$cmax :: FAccessFlag -> FAccessFlag -> FAccessFlag
>= :: FAccessFlag -> FAccessFlag -> Bool
$c>= :: FAccessFlag -> FAccessFlag -> Bool
> :: FAccessFlag -> FAccessFlag -> Bool
$c> :: FAccessFlag -> FAccessFlag -> Bool
<= :: FAccessFlag -> FAccessFlag -> Bool
$c<= :: FAccessFlag -> FAccessFlag -> Bool
< :: FAccessFlag -> FAccessFlag -> Bool
$c< :: FAccessFlag -> FAccessFlag -> Bool
compare :: FAccessFlag -> FAccessFlag -> Ordering
$ccompare :: FAccessFlag -> FAccessFlag -> Ordering
$cp1Ord :: Eq FAccessFlag
Ord, Int -> FAccessFlag -> ShowS
[FAccessFlag] -> ShowS
FAccessFlag -> String
(Int -> FAccessFlag -> ShowS)
-> (FAccessFlag -> String)
-> ([FAccessFlag] -> ShowS)
-> Show FAccessFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FAccessFlag] -> ShowS
$cshowList :: [FAccessFlag] -> ShowS
show :: FAccessFlag -> String
$cshow :: FAccessFlag -> String
showsPrec :: Int -> FAccessFlag -> ShowS
$cshowsPrec :: Int -> FAccessFlag -> ShowS
Show, FAccessFlag -> FAccessFlag -> Bool
(FAccessFlag -> FAccessFlag -> Bool)
-> (FAccessFlag -> FAccessFlag -> Bool) -> Eq FAccessFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FAccessFlag -> FAccessFlag -> Bool
$c/= :: FAccessFlag -> FAccessFlag -> Bool
== :: FAccessFlag -> FAccessFlag -> Bool
$c== :: FAccessFlag -> FAccessFlag -> Bool
Eq, FAccessFlag -> ()
(FAccessFlag -> ()) -> NFData FAccessFlag
forall a. (a -> ()) -> NFData a
rnf :: FAccessFlag -> ()
$crnf :: FAccessFlag -> ()
NFData, (forall x. FAccessFlag -> Rep FAccessFlag x)
-> (forall x. Rep FAccessFlag x -> FAccessFlag)
-> Generic FAccessFlag
forall x. Rep FAccessFlag x -> FAccessFlag
forall x. FAccessFlag -> Rep FAccessFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep FAccessFlag x -> FAccessFlag
$cfrom :: forall x. FAccessFlag -> Rep FAccessFlag x
Generic)

-- | The 'Enumish' mapping of the 'FAccessFlag'
fflags :: [(Int, FAccessFlag)]
fflags :: [(Int, FAccessFlag)]
fflags =
  [ (Int
0 , FAccessFlag
FPublic)
  , (Int
1 , FAccessFlag
FPrivate)
  , (Int
2 , FAccessFlag
FProtected)
  , (Int
3 , FAccessFlag
FStatic)
  , (Int
4 , FAccessFlag
FFinal)
  , (Int
6 , FAccessFlag
FVolatile)
  , (Int
7 , FAccessFlag
FTransient)
  , (Int
12, FAccessFlag
FSynthetic)
  , (Int
14, FAccessFlag
FEnum)
  ]

instance Enumish FAccessFlag where
  inOrder :: [(Int, FAccessFlag)]
inOrder = [(Int, FAccessFlag)]
fflags


-- | Access flags for parameters, as declared in the documentation.
data PAccessFlag
  = PFinal
    -- ^ Indicates that the formal parameter was declared final.
  | PSynthetic
    -- ^ Indicates that the formal parameter was not explicitly or
    -- implicitly declared in source code, according to the specification
    -- of the language in which the source code was written (JLS §13.1).
    -- (The formal parameter is an implementation artifact of the compiler
    -- which produced this class file.) 
  | PMandated
    -- ^ Indicates that the formal parameter was implicitly declared in
    -- source code, according to the specification of the language in which
    -- the source code was written (JLS §13.1). (The formal parameter is
    -- mandated by a language specification, so all compilers for the
    -- language must emit it.)  
  deriving (Eq PAccessFlag
Eq PAccessFlag
-> (PAccessFlag -> PAccessFlag -> Ordering)
-> (PAccessFlag -> PAccessFlag -> Bool)
-> (PAccessFlag -> PAccessFlag -> Bool)
-> (PAccessFlag -> PAccessFlag -> Bool)
-> (PAccessFlag -> PAccessFlag -> Bool)
-> (PAccessFlag -> PAccessFlag -> PAccessFlag)
-> (PAccessFlag -> PAccessFlag -> PAccessFlag)
-> Ord PAccessFlag
PAccessFlag -> PAccessFlag -> Bool
PAccessFlag -> PAccessFlag -> Ordering
PAccessFlag -> PAccessFlag -> PAccessFlag
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PAccessFlag -> PAccessFlag -> PAccessFlag
$cmin :: PAccessFlag -> PAccessFlag -> PAccessFlag
max :: PAccessFlag -> PAccessFlag -> PAccessFlag
$cmax :: PAccessFlag -> PAccessFlag -> PAccessFlag
>= :: PAccessFlag -> PAccessFlag -> Bool
$c>= :: PAccessFlag -> PAccessFlag -> Bool
> :: PAccessFlag -> PAccessFlag -> Bool
$c> :: PAccessFlag -> PAccessFlag -> Bool
<= :: PAccessFlag -> PAccessFlag -> Bool
$c<= :: PAccessFlag -> PAccessFlag -> Bool
< :: PAccessFlag -> PAccessFlag -> Bool
$c< :: PAccessFlag -> PAccessFlag -> Bool
compare :: PAccessFlag -> PAccessFlag -> Ordering
$ccompare :: PAccessFlag -> PAccessFlag -> Ordering
$cp1Ord :: Eq PAccessFlag
Ord, Int -> PAccessFlag -> ShowS
[PAccessFlag] -> ShowS
PAccessFlag -> String
(Int -> PAccessFlag -> ShowS)
-> (PAccessFlag -> String)
-> ([PAccessFlag] -> ShowS)
-> Show PAccessFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PAccessFlag] -> ShowS
$cshowList :: [PAccessFlag] -> ShowS
show :: PAccessFlag -> String
$cshow :: PAccessFlag -> String
showsPrec :: Int -> PAccessFlag -> ShowS
$cshowsPrec :: Int -> PAccessFlag -> ShowS
Show, PAccessFlag -> PAccessFlag -> Bool
(PAccessFlag -> PAccessFlag -> Bool)
-> (PAccessFlag -> PAccessFlag -> Bool) -> Eq PAccessFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PAccessFlag -> PAccessFlag -> Bool
$c/= :: PAccessFlag -> PAccessFlag -> Bool
== :: PAccessFlag -> PAccessFlag -> Bool
$c== :: PAccessFlag -> PAccessFlag -> Bool
Eq, PAccessFlag -> ()
(PAccessFlag -> ()) -> NFData PAccessFlag
forall a. (a -> ()) -> NFData a
rnf :: PAccessFlag -> ()
$crnf :: PAccessFlag -> ()
NFData, (forall x. PAccessFlag -> Rep PAccessFlag x)
-> (forall x. Rep PAccessFlag x -> PAccessFlag)
-> Generic PAccessFlag
forall x. Rep PAccessFlag x -> PAccessFlag
forall x. PAccessFlag -> Rep PAccessFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PAccessFlag x -> PAccessFlag
$cfrom :: forall x. PAccessFlag -> Rep PAccessFlag x
Generic)

instance Enumish PAccessFlag where
  inOrder :: [(Int, PAccessFlag)]
inOrder = [(Int, PAccessFlag)]
pflags

-- | The 'Enumish' mapping of the 'PAccessFlag'
pflags :: [(Int, PAccessFlag)]
pflags :: [(Int, PAccessFlag)]
pflags = [(Int
4, PAccessFlag
PFinal), (Int
12, PAccessFlag
PSynthetic), (Int
15, PAccessFlag
PMandated)]