{-# LINE 1 "Database/TokyoCabinet/Error.hsc" #-} {-# LANGUAGE CPP, ForeignFunctionInterface #-} {-# LINE 2 "Database/TokyoCabinet/Error.hsc" #-} module Database.TokyoCabinet.Error ( -- * Error code ECODE(..) -- * Utility function , errmsg , cintToError , errorToCInt -- * Other constants , cINT_MIN ) where import Foreign import Foreign.C.Types import Foreign.C.String {-# LINE 19 "Database/TokyoCabinet/Error.hsc" #-} -- | Represents error data ECODE = ESUCCESS | -- ^ success ETHREAD | -- ^ threading error EINVALID | -- ^ invalid operation ENOFILE | -- ^ file not found ENOPERM | -- ^ no permission EMETA | -- ^ invalid meta data ERHEAD | -- ^ invalid record header EOPEN | -- ^ open error ECLOSE | -- ^ close error ETRUNC | -- ^ trunc error ESYNC | -- ^ sync error ESTAT | -- ^ stat error ESEEK | -- ^ seek error EREAD | -- ^ read error EWRITE | -- ^ write error EMMAP | -- ^ mmap error ELOCK | -- ^ lock error EUNLINK | -- ^ unlink error ERENAME | -- ^ rename error EMKDIR | -- ^ mkdir error ERMDIR | -- ^ rmdir error EKEEP | -- ^ existing record ENOREC | -- ^ no record found EMISC -- ^ miscellaneous error deriving (Eq, Ord) instance Show ECODE where show e = errmsg e ++ " (code:" ++ show (errorToCInt e) ++ ")" errorToCInt :: ECODE -> CInt errorToCInt ESUCCESS = 0 {-# LINE 53 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ETHREAD = 1 {-# LINE 54 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EINVALID = 2 {-# LINE 55 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ENOFILE = 3 {-# LINE 56 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ENOPERM = 4 {-# LINE 57 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EMETA = 5 {-# LINE 58 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ERHEAD = 6 {-# LINE 59 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EOPEN = 7 {-# LINE 60 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ECLOSE = 8 {-# LINE 61 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ETRUNC = 9 {-# LINE 62 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ESYNC = 10 {-# LINE 63 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ESTAT = 11 {-# LINE 64 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ESEEK = 12 {-# LINE 65 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EREAD = 13 {-# LINE 66 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EWRITE = 14 {-# LINE 67 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EMMAP = 15 {-# LINE 68 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ELOCK = 16 {-# LINE 69 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EUNLINK = 17 {-# LINE 70 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ERENAME = 18 {-# LINE 71 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EMKDIR = 19 {-# LINE 72 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ERMDIR = 20 {-# LINE 73 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EKEEP = 21 {-# LINE 74 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt ENOREC = 22 {-# LINE 75 "Database/TokyoCabinet/Error.hsc" #-} errorToCInt EMISC = 9999 {-# LINE 76 "Database/TokyoCabinet/Error.hsc" #-} cintToError :: CInt -> ECODE cintToError 0 = ESUCCESS {-# LINE 79 "Database/TokyoCabinet/Error.hsc" #-} cintToError 1 = ETHREAD {-# LINE 80 "Database/TokyoCabinet/Error.hsc" #-} cintToError 2 = EINVALID {-# LINE 81 "Database/TokyoCabinet/Error.hsc" #-} cintToError 3 = ENOFILE {-# LINE 82 "Database/TokyoCabinet/Error.hsc" #-} cintToError 4 = ENOPERM {-# LINE 83 "Database/TokyoCabinet/Error.hsc" #-} cintToError 5 = EMETA {-# LINE 84 "Database/TokyoCabinet/Error.hsc" #-} cintToError 6 = ERHEAD {-# LINE 85 "Database/TokyoCabinet/Error.hsc" #-} cintToError 7 = EOPEN {-# LINE 86 "Database/TokyoCabinet/Error.hsc" #-} cintToError 8 = ECLOSE {-# LINE 87 "Database/TokyoCabinet/Error.hsc" #-} cintToError 9 = ETRUNC {-# LINE 88 "Database/TokyoCabinet/Error.hsc" #-} cintToError 10 = ESYNC {-# LINE 89 "Database/TokyoCabinet/Error.hsc" #-} cintToError 11 = ESTAT {-# LINE 90 "Database/TokyoCabinet/Error.hsc" #-} cintToError 12 = ESEEK {-# LINE 91 "Database/TokyoCabinet/Error.hsc" #-} cintToError 13 = EREAD {-# LINE 92 "Database/TokyoCabinet/Error.hsc" #-} cintToError 14 = EWRITE {-# LINE 93 "Database/TokyoCabinet/Error.hsc" #-} cintToError 15 = EMMAP {-# LINE 94 "Database/TokyoCabinet/Error.hsc" #-} cintToError 16 = ELOCK {-# LINE 95 "Database/TokyoCabinet/Error.hsc" #-} cintToError 17 = EUNLINK {-# LINE 96 "Database/TokyoCabinet/Error.hsc" #-} cintToError 18 = ERENAME {-# LINE 97 "Database/TokyoCabinet/Error.hsc" #-} cintToError 19 = EMKDIR {-# LINE 98 "Database/TokyoCabinet/Error.hsc" #-} cintToError 20 = ERMDIR {-# LINE 99 "Database/TokyoCabinet/Error.hsc" #-} cintToError 21 = EKEEP {-# LINE 100 "Database/TokyoCabinet/Error.hsc" #-} cintToError 22 = ENOREC {-# LINE 101 "Database/TokyoCabinet/Error.hsc" #-} cintToError 9999 = EMISC {-# LINE 102 "Database/TokyoCabinet/Error.hsc" #-} cintToError _ = error "unknown error code" cINT_MIN :: CInt cINT_MIN = -2147483648 {-# LINE 106 "Database/TokyoCabinet/Error.hsc" #-} -- | Convert error code to message string. errmsg :: ECODE -> String errmsg = unsafePerformIO . peekCString . c_tcerrmsg . errorToCInt foreign import ccall "tcerrmsg" c_tcerrmsg :: CInt -> CString