    {-# LINE 1 "src/System/Posix/Syslog/Priority.hsc" #-}
    {-# LANGUAGE DeriveGeneric #-}
    {-# LINE 2 "src/System/Posix/Syslog/Priority.hsc" #-}

    {- |
       Maintainer: simons@cryp.to
       Stability: provisional
       Portability: POSIX

       FFI bindings to @syslog(3)@ from
       <http://pubs.opengroup.org/onlinepubs/9699919799/functions/syslog.html POSIX.1-2008>.
       This module is intended for purposes of low-level implementation. Users of
       this library should prefer safer and more convenient API provided by
       "System.Posix.Syslog".
    -}

    module System.Posix.Syslog.Priority where

    import Foreign.C
    import GHC.Generics ( Generic )

    {-# LINE 21 "src/System/Posix/Syslog/Priority.hsc" #-}

    -- * Message Priorities

    -- | Log messages are prioritized with one of the following levels:
    --
    -- >>> [minBound..maxBound] :: [Priority]
    -- [Emergency,Alert,Critical,Error,Warning,Notice,Info,Debug]
    --
    -- The 'Ord' instance for 'Priority' considers the more urgent level lower than
    -- less urgent ones:
    --
    -- >>> Emergency < Debug
    -- True
    -- >>> minimum [minBound..maxBound] :: Priority
    -- Emergency
    -- >>> maximum [minBound..maxBound] :: Priority
    -- Debug

    data Priority = Emergency       -- ^ the system is unusable
                  | Alert           -- ^ action must be taken immediately
                  | Critical        -- ^ critical conditions
                  | Error           -- ^ error conditions
                  | Warning         -- ^ warning conditions
                  | Notice          -- ^ normal but significant condition
                  | Info            -- ^ informational
                  | Debug           -- ^ debug-level messages
      deriving (Show, Read, Eq, Ord, Bounded, Enum, Generic)

    -- | Translate a 'Priority' into the system-dependent identifier that's used by
    -- the @syslog(3)@ implementation.

    {-# INLINE fromPriority #-}
    fromPriority :: Priority -> CInt
    fromPriority Emergency = 0
    {-# LINE 55 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Alert     = 1
    {-# LINE 56 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Critical  = 2
    {-# LINE 57 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Error     = 3
    {-# LINE 58 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Warning   = 4
    {-# LINE 59 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Notice    = 5
    {-# LINE 60 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Info      = 6
    {-# LINE 61 "src/System/Posix/Syslog/Priority.hsc" #-}
    fromPriority Debug     = 7
    {-# LINE 62 "src/System/Posix/Syslog/Priority.hsc" #-}