{-# LANGUAGE DeriveLift #-}

module Argo.Internal.Type.Permission where

import qualified Argo.Vendor.DeepSeq as DeepSeq
import qualified Argo.Vendor.TemplateHaskell as TH

data Permission
    = Allow
    | Forbid
    deriving (Permission -> Permission -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Permission -> Permission -> Bool
$c/= :: Permission -> Permission -> Bool
== :: Permission -> Permission -> Bool
$c== :: Permission -> Permission -> Bool
Eq, forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Permission -> m Exp
forall (m :: * -> *). Quote m => Permission -> Code m Permission
liftTyped :: forall (m :: * -> *). Quote m => Permission -> Code m Permission
$cliftTyped :: forall (m :: * -> *). Quote m => Permission -> Code m Permission
lift :: forall (m :: * -> *). Quote m => Permission -> m Exp
$clift :: forall (m :: * -> *). Quote m => Permission -> m Exp
TH.Lift, Int -> Permission -> ShowS
[Permission] -> ShowS
Permission -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Permission] -> ShowS
$cshowList :: [Permission] -> ShowS
show :: Permission -> String
$cshow :: Permission -> String
showsPrec :: Int -> Permission -> ShowS
$cshowsPrec :: Int -> Permission -> ShowS
Show)

instance DeepSeq.NFData Permission where
    rnf :: Permission -> ()
rnf = forall a b c. (a -> b -> c) -> b -> a -> c
flip seq :: forall a b. a -> b -> b
seq ()

toBool :: Permission -> Bool
toBool :: Permission -> Bool
toBool Permission
x = case Permission
x of
    Permission
Allow -> Bool
True
    Permission
Forbid -> Bool
False