module Debian.Dpkg.Enums (
PkgWant(..)
, PkgEflag(..)
, PkgStatus(..)
, PkgPriority(..)
) where
import Foreign.C.Types
import Foreign.C.String
import Foreign.Ptr
import Foreign.Storable
data PkgWant = PKG_WANT_UNKNOWN
| PKG_WANT_INSTALL
| PKG_WANT_HOLD
| PKG_WANT_DEINSTALL
| PKG_WANT_PURGE
| PKG_WANT_SENTINEL
deriving (Enum,Eq,Show)
data PkgEflag = PKG_EFLAG_OK
| PKG_EFLAG_REINSTREQ
deriving (Eq,Show)
instance Enum PkgEflag where
succ PKG_EFLAG_OK = PKG_EFLAG_REINSTREQ
succ PKG_EFLAG_REINSTREQ = error "PkgEflag.succ: PKG_EFLAG_REINSTREQ has no successor"
pred PKG_EFLAG_REINSTREQ = PKG_EFLAG_OK
pred PKG_EFLAG_OK = error "PkgEflag.pred: PKG_EFLAG_OK has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from PKG_EFLAG_REINSTREQ
fromEnum PKG_EFLAG_OK = 0
fromEnum PKG_EFLAG_REINSTREQ = 1
toEnum 0 = PKG_EFLAG_OK
toEnum 1 = PKG_EFLAG_REINSTREQ
toEnum unmatched = error ("PkgEflag.toEnum: Cannot match " ++ show unmatched)
data PkgStatus = PKG_STAT_NOTINSTALLED
| PKG_STAT_CONFIGFILES
| PKG_STAT_HALFINSTALLED
| PKG_STAT_UNPACKED
| PKG_STAT_HALFCONFIGURED
| PKG_STAT_TRIGGERSAWAITED
| PKG_STAT_TRIGGERSPENDING
| PKG_STAT_INSTALLED
deriving (Enum,Eq,Show)
data PkgPriority = PKG_PRIO_UNSET
| PKG_PRIO_REQUIRED
| PKG_PRIO_IMPORTANT
| PKG_PRIO_STANDARD
| PKG_PRIO_OPTIONAL
| PKG_PRIO_EXTRA
| PKG_PRIO_OTHER
| PKG_PRIO_UNKNOWN
deriving (Eq,Show)
instance Enum PkgPriority where
succ PKG_PRIO_UNSET = PKG_PRIO_REQUIRED
succ PKG_PRIO_REQUIRED = PKG_PRIO_IMPORTANT
succ PKG_PRIO_IMPORTANT = PKG_PRIO_STANDARD
succ PKG_PRIO_STANDARD = PKG_PRIO_OPTIONAL
succ PKG_PRIO_OPTIONAL = PKG_PRIO_EXTRA
succ PKG_PRIO_EXTRA = PKG_PRIO_OTHER
succ PKG_PRIO_OTHER = PKG_PRIO_UNKNOWN
succ PKG_PRIO_UNKNOWN = error "PkgPriority.succ: PKG_PRIO_UNKNOWN has no successor"
pred PKG_PRIO_REQUIRED = PKG_PRIO_UNSET
pred PKG_PRIO_IMPORTANT = PKG_PRIO_REQUIRED
pred PKG_PRIO_STANDARD = PKG_PRIO_IMPORTANT
pred PKG_PRIO_OPTIONAL = PKG_PRIO_STANDARD
pred PKG_PRIO_EXTRA = PKG_PRIO_OPTIONAL
pred PKG_PRIO_OTHER = PKG_PRIO_EXTRA
pred PKG_PRIO_UNKNOWN = PKG_PRIO_OTHER
pred PKG_PRIO_UNSET = error "PkgPriority.pred: PKG_PRIO_UNSET has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from PKG_PRIO_UNKNOWN
fromEnum PKG_PRIO_UNSET = (1)
fromEnum PKG_PRIO_REQUIRED = 0
fromEnum PKG_PRIO_IMPORTANT = 1
fromEnum PKG_PRIO_STANDARD = 2
fromEnum PKG_PRIO_OPTIONAL = 3
fromEnum PKG_PRIO_EXTRA = 4
fromEnum PKG_PRIO_OTHER = 5
fromEnum PKG_PRIO_UNKNOWN = 6
toEnum (1) = PKG_PRIO_UNSET
toEnum 0 = PKG_PRIO_REQUIRED
toEnum 1 = PKG_PRIO_IMPORTANT
toEnum 2 = PKG_PRIO_STANDARD
toEnum 3 = PKG_PRIO_OPTIONAL
toEnum 4 = PKG_PRIO_EXTRA
toEnum 5 = PKG_PRIO_OTHER
toEnum 6 = PKG_PRIO_UNKNOWN
toEnum unmatched = error ("PkgPriority.toEnum: Cannot match " ++ show unmatched)
data DpkgMsgType = DPKG_MSG_NONE
| DPKG_MSG_WARN
| DPKG_MSG_ERROR
deriving (Enum,Eq,Show)