module GHC.Types.ThLevelIndex where
import GHC.Prelude
import GHC.Utils.Outputable
import GHC.Types.Basic ( ImportLevel(..) )
import Data.Data
newtype ThLevelIndex = ThLevelIndex Int deriving (ThLevelIndex -> ThLevelIndex -> Bool
(ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool) -> Eq ThLevelIndex
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ThLevelIndex -> ThLevelIndex -> Bool
== :: ThLevelIndex -> ThLevelIndex -> Bool
$c/= :: ThLevelIndex -> ThLevelIndex -> Bool
/= :: ThLevelIndex -> ThLevelIndex -> Bool
Eq, Eq ThLevelIndex
Eq ThLevelIndex =>
(ThLevelIndex -> ThLevelIndex -> Ordering)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> ThLevelIndex)
-> (ThLevelIndex -> ThLevelIndex -> ThLevelIndex)
-> Ord ThLevelIndex
ThLevelIndex -> ThLevelIndex -> Bool
ThLevelIndex -> ThLevelIndex -> Ordering
ThLevelIndex -> ThLevelIndex -> ThLevelIndex
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
$ccompare :: ThLevelIndex -> ThLevelIndex -> Ordering
compare :: ThLevelIndex -> ThLevelIndex -> Ordering
$c< :: ThLevelIndex -> ThLevelIndex -> Bool
< :: ThLevelIndex -> ThLevelIndex -> Bool
$c<= :: ThLevelIndex -> ThLevelIndex -> Bool
<= :: ThLevelIndex -> ThLevelIndex -> Bool
$c> :: ThLevelIndex -> ThLevelIndex -> Bool
> :: ThLevelIndex -> ThLevelIndex -> Bool
$c>= :: ThLevelIndex -> ThLevelIndex -> Bool
>= :: ThLevelIndex -> ThLevelIndex -> Bool
$cmax :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
max :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
$cmin :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
min :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
Ord, Typeable ThLevelIndex
Typeable ThLevelIndex =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ThLevelIndex -> c ThLevelIndex)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ThLevelIndex)
-> (ThLevelIndex -> Constr)
-> (ThLevelIndex -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ThLevelIndex))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ThLevelIndex))
-> ((forall b. Data b => b -> b) -> ThLevelIndex -> ThLevelIndex)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r)
-> (forall u. (forall d. Data d => d -> u) -> ThLevelIndex -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> ThLevelIndex -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex)
-> Data ThLevelIndex
ThLevelIndex -> Constr
ThLevelIndex -> DataType
(forall b. Data b => b -> b) -> ThLevelIndex -> ThLevelIndex
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> ThLevelIndex -> u
forall u. (forall d. Data d => d -> u) -> ThLevelIndex -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ThLevelIndex
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ThLevelIndex -> c ThLevelIndex
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ThLevelIndex)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ThLevelIndex)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ThLevelIndex -> c ThLevelIndex
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ThLevelIndex -> c ThLevelIndex
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ThLevelIndex
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ThLevelIndex
$ctoConstr :: ThLevelIndex -> Constr
toConstr :: ThLevelIndex -> Constr
$cdataTypeOf :: ThLevelIndex -> DataType
dataTypeOf :: ThLevelIndex -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ThLevelIndex)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ThLevelIndex)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ThLevelIndex)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c ThLevelIndex)
$cgmapT :: (forall b. Data b => b -> b) -> ThLevelIndex -> ThLevelIndex
gmapT :: (forall b. Data b => b -> b) -> ThLevelIndex -> ThLevelIndex
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ThLevelIndex -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> ThLevelIndex -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> ThLevelIndex -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ThLevelIndex -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ThLevelIndex -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ThLevelIndex -> m ThLevelIndex
Data)
instance Outputable ThLevelIndex where
ppr :: ThLevelIndex -> SDoc
ppr (ThLevelIndex Int
i) = Int -> SDoc
forall doc. IsLine doc => Int -> doc
int Int
i
incThLevelIndex :: ThLevelIndex -> ThLevelIndex
incThLevelIndex :: ThLevelIndex -> ThLevelIndex
incThLevelIndex (ThLevelIndex Int
i) = Int -> ThLevelIndex
ThLevelIndex (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
decThLevelIndex :: ThLevelIndex -> ThLevelIndex
decThLevelIndex :: ThLevelIndex -> ThLevelIndex
decThLevelIndex (ThLevelIndex Int
i) = Int -> ThLevelIndex
ThLevelIndex (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
topLevelIndex :: ThLevelIndex
topLevelIndex :: ThLevelIndex
topLevelIndex = Int -> ThLevelIndex
ThLevelIndex Int
0
spliceLevelIndex :: ThLevelIndex
spliceLevelIndex :: ThLevelIndex
spliceLevelIndex = ThLevelIndex -> ThLevelIndex
decThLevelIndex ThLevelIndex
topLevelIndex
quoteLevelIndex :: ThLevelIndex
quoteLevelIndex :: ThLevelIndex
quoteLevelIndex = ThLevelIndex -> ThLevelIndex
incThLevelIndex ThLevelIndex
topLevelIndex
thLevelIndexFromImportLevel :: ImportLevel -> ThLevelIndex
thLevelIndexFromImportLevel :: ImportLevel -> ThLevelIndex
thLevelIndexFromImportLevel ImportLevel
NormalLevel = ThLevelIndex
topLevelIndex
thLevelIndexFromImportLevel ImportLevel
SpliceLevel = ThLevelIndex
spliceLevelIndex
thLevelIndexFromImportLevel ImportLevel
QuoteLevel = ThLevelIndex
quoteLevelIndex