{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE DeriveGeneric #-}

module UniformBase 
    ( module UniformBase
    , module Uniform.Zero
    , module Uniform.Pointless
    , module Uniform.Error
    , module Uniform.Strings
    , module Uniform.FileIO
    -- , module Uniform.PathShowCase
    , module Uniform.Time
    , Generic
    -- , Read 
    -- , Path (..)
    ) where

import Uniform.Zero
import Uniform.Pointless
import Uniform.Strings 
import Uniform.FileIO
import Uniform.Error
import Uniform.Time 
-- import Uniform.PathShowCase
import GHC.Generics

-- TODO move 

data NoticeLevel = NoticeLevel0 | NoticeLevel1 | NoticeLevel2 deriving (NoticeLevel -> NoticeLevel -> Bool
(NoticeLevel -> NoticeLevel -> Bool)
-> (NoticeLevel -> NoticeLevel -> Bool) -> Eq NoticeLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NoticeLevel -> NoticeLevel -> Bool
$c/= :: NoticeLevel -> NoticeLevel -> Bool
== :: NoticeLevel -> NoticeLevel -> Bool
$c== :: NoticeLevel -> NoticeLevel -> Bool
Eq, Eq NoticeLevel
Eq NoticeLevel
-> (NoticeLevel -> NoticeLevel -> Ordering)
-> (NoticeLevel -> NoticeLevel -> Bool)
-> (NoticeLevel -> NoticeLevel -> Bool)
-> (NoticeLevel -> NoticeLevel -> Bool)
-> (NoticeLevel -> NoticeLevel -> Bool)
-> (NoticeLevel -> NoticeLevel -> NoticeLevel)
-> (NoticeLevel -> NoticeLevel -> NoticeLevel)
-> Ord NoticeLevel
NoticeLevel -> NoticeLevel -> Bool
NoticeLevel -> NoticeLevel -> Ordering
NoticeLevel -> NoticeLevel -> NoticeLevel
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 :: NoticeLevel -> NoticeLevel -> NoticeLevel
$cmin :: NoticeLevel -> NoticeLevel -> NoticeLevel
max :: NoticeLevel -> NoticeLevel -> NoticeLevel
$cmax :: NoticeLevel -> NoticeLevel -> NoticeLevel
>= :: NoticeLevel -> NoticeLevel -> Bool
$c>= :: NoticeLevel -> NoticeLevel -> Bool
> :: NoticeLevel -> NoticeLevel -> Bool
$c> :: NoticeLevel -> NoticeLevel -> Bool
<= :: NoticeLevel -> NoticeLevel -> Bool
$c<= :: NoticeLevel -> NoticeLevel -> Bool
< :: NoticeLevel -> NoticeLevel -> Bool
$c< :: NoticeLevel -> NoticeLevel -> Bool
compare :: NoticeLevel -> NoticeLevel -> Ordering
$ccompare :: NoticeLevel -> NoticeLevel -> Ordering
$cp1Ord :: Eq NoticeLevel
Ord, Int -> NoticeLevel -> ShowS
[NoticeLevel] -> ShowS
NoticeLevel -> String
(Int -> NoticeLevel -> ShowS)
-> (NoticeLevel -> String)
-> ([NoticeLevel] -> ShowS)
-> Show NoticeLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NoticeLevel] -> ShowS
$cshowList :: [NoticeLevel] -> ShowS
show :: NoticeLevel -> String
$cshow :: NoticeLevel -> String
showsPrec :: Int -> NoticeLevel -> ShowS
$cshowsPrec :: Int -> NoticeLevel -> ShowS
Show, ReadPrec [NoticeLevel]
ReadPrec NoticeLevel
Int -> ReadS NoticeLevel
ReadS [NoticeLevel]
(Int -> ReadS NoticeLevel)
-> ReadS [NoticeLevel]
-> ReadPrec NoticeLevel
-> ReadPrec [NoticeLevel]
-> Read NoticeLevel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NoticeLevel]
$creadListPrec :: ReadPrec [NoticeLevel]
readPrec :: ReadPrec NoticeLevel
$creadPrec :: ReadPrec NoticeLevel
readList :: ReadS [NoticeLevel]
$creadList :: ReadS [NoticeLevel]
readsPrec :: Int -> ReadS NoticeLevel
$creadsPrec :: Int -> ReadS NoticeLevel
Read, (forall x. NoticeLevel -> Rep NoticeLevel x)
-> (forall x. Rep NoticeLevel x -> NoticeLevel)
-> Generic NoticeLevel
forall x. Rep NoticeLevel x -> NoticeLevel
forall x. NoticeLevel -> Rep NoticeLevel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NoticeLevel x -> NoticeLevel
$cfrom :: forall x. NoticeLevel -> Rep NoticeLevel x
Generic)
instance Zeros NoticeLevel where zero :: NoticeLevel
zero = NoticeLevel
NoticeLevel0 
inform, informNone, informAll :: NoticeLevel -> Bool
inform :: NoticeLevel -> Bool
inform =  Bool -> Bool
not (Bool -> Bool) -> (NoticeLevel -> Bool) -> NoticeLevel -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NoticeLevel -> Bool
forall z. (Zeros z, Eq z) => z -> Bool
isZero
informNone :: NoticeLevel -> Bool
informNone = Bool -> NoticeLevel -> Bool
forall a b. a -> b -> a
const Bool
False  -- to use with: when (informNone debug)
informAll :: NoticeLevel -> Bool
informAll = Bool -> NoticeLevel -> Bool
forall a b. a -> b -> a
const Bool
True