aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rfsv.cc
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2000-08-02 18:26:29 +0000
committerFritz Elfert <felfert@to.com>2000-08-02 18:26:29 +0000
commitd439bc3807b3f7cea0544899ee5fc8d849bf32df (patch)
tree5c28e89d19cc8c5cf7759dc4ae0082e21151fe0a /lib/rfsv.cc
parent83757d37b7cfb7ef6da178a26b9a203d1b65e0af (diff)
downloadplptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.tar.gz
plptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.tar.bz2
plptools-d439bc3807b3f7cea0544899ee5fc8d849bf32df.zip
Added a wrapper for enums and changed all return-code related stuff
as well as some other enums to use that instead of plain enums. This results in stronger type checking, range checking and the ability to write an enum's textual representation.
Diffstat (limited to 'lib/rfsv.cc')
-rw-r--r--lib/rfsv.cc230
1 files changed, 76 insertions, 154 deletions
diff --git a/lib/rfsv.cc b/lib/rfsv.cc
index 3b9dc6a..0b7fd42 100644
--- a/lib/rfsv.cc
+++ b/lib/rfsv.cc
@@ -1,158 +1,80 @@
#include "rfsv.h"
+#include "Enum.h"
-char *rfsv::
-opErr(long status)
-{
- enum errs e = (enum errs) status;
- switch (e) {
- case E_PSI_GEN_NONE:
- return "no error";
- case E_PSI_GEN_FAIL:
- return "general";
- case E_PSI_GEN_ARG:
- return "bad argument";
- case E_PSI_GEN_OS:
- return "OS error";
- case E_PSI_GEN_NSUP:
- return "not supported";
- case E_PSI_GEN_UNDER:
- return "numeric underflow";
- case E_PSI_GEN_OVER:
- return "numeric overflow";
- case E_PSI_GEN_RANGE:
- return "numeric exception";
- case E_PSI_GEN_INUSE:
- return "in use";
- case E_PSI_GEN_NOMEMORY:
- return "out of memory";
- case E_PSI_GEN_NOSEGMENTS:
- return "out of segments";
- case E_PSI_GEN_NOSEM:
- return "out of semaphores";
- case E_PSI_GEN_NOPROC:
- return "out of processes";
- case E_PSI_GEN_OPEN:
- return "already open";
- case E_PSI_GEN_NOTOPEN:
- return "not open";
- case E_PSI_GEN_IMAGE:
- return "bad image";
- case E_PSI_GEN_RECEIVER:
- return "receiver error";
- case E_PSI_GEN_DEVICE:
- return "device error";
- case E_PSI_GEN_FSYS:
- return "no filesystem";
- case E_PSI_GEN_START:
- return "not ready";
- case E_PSI_GEN_NOFONT:
- return "no font";
- case E_PSI_GEN_TOOWIDE:
- return "too wide";
- case E_PSI_GEN_TOOMANY:
- return "too many";
- case E_PSI_FILE_EXIST:
- return "file already exists";
- case E_PSI_FILE_NXIST:
- return "no such file";
- case E_PSI_FILE_WRITE:
- return "write error";
- case E_PSI_FILE_READ:
- return "read error";
- case E_PSI_FILE_EOF:
- return "end of file";
- case E_PSI_FILE_FULL:
- return "disk/serial read buffer full";
- case E_PSI_FILE_NAME:
- return "invalid name";
- case E_PSI_FILE_ACCESS:
- return "access denied";
- case E_PSI_FILE_LOCKED:
- return "ressource locked";
- case E_PSI_FILE_DEVICE:
- return "no such device";
- case E_PSI_FILE_DIR:
- return "no such directory";
- case E_PSI_FILE_RECORD:
- return "no such record";
- case E_PSI_FILE_RDONLY:
- return "file is read-only";
- case E_PSI_FILE_INV:
- return "invalid I/O operation";
- case E_PSI_FILE_PENDING:
- return "I/O pending (not yet completed)";
- case E_PSI_FILE_VOLUME:
- return "invalid volume name";
- case E_PSI_FILE_CANCEL:
- return "cancelled";
- case E_PSI_FILE_ALLOC:
- return "no memory for control block";
- case E_PSI_FILE_DISC:
- return "unit disconnected";
- case E_PSI_FILE_CONNECT:
- return "already connected";
- case E_PSI_FILE_RETRAN:
- return "retransmission threshold exceeded";
- case E_PSI_FILE_LINE:
- return "physical link failure";
- case E_PSI_FILE_INACT:
- return "inactivity timer expired";
- case E_PSI_FILE_PARITY:
- return "serial parity error";
- case E_PSI_FILE_FRAME:
- return "serial framing error";
- case E_PSI_FILE_OVERRUN:
- return "serial overrun error";
- case E_PSI_MDM_CONFAIL:
- return "modem cannot connect to remote modem";
- case E_PSI_MDM_BUSY:
- return "remote modem busy";
- case E_PSI_MDM_NOANS:
- return "remote modem did not answer";
- case E_PSI_MDM_BLACKLIST:
- return "number blacklisted by the modem";
- case E_PSI_FILE_NOTREADY:
- return "drive not ready";
- case E_PSI_FILE_UNKNOWN:
- return "unknown media";
- case E_PSI_FILE_DIRFULL:
- return "directory full";
- case E_PSI_FILE_PROTECT:
- return "write-protected";
- case E_PSI_FILE_CORRUPT:
- return "media corrupt";
- case E_PSI_FILE_ABORT:
- return "aborted operation";
- case E_PSI_FILE_ERASE:
- return "failed to erase flash media";
- case E_PSI_FILE_INVALID:
- return "invalid file for DBF system";
- case E_PSI_GEN_POWER:
- return "power failure";
- case E_PSI_FILE_TOOBIG:
- return "too big";
- case E_PSI_GEN_DESCR:
- return "bad descriptor";
- case E_PSI_GEN_LIB:
- return "bad entry point";
- case E_PSI_FILE_NDISC:
- return "could not diconnect";
- case E_PSI_FILE_DRIVER:
- return "bad driver";
- case E_PSI_FILE_COMPLETION:
- return "operation not completed";
- case E_PSI_GEN_BUSY:
- return "server busy";
- case E_PSI_GEN_TERMINATED:
- return "terminated";
- case E_PSI_GEN_DIED:
- return "died";
- case E_PSI_FILE_HANDLE:
- return "bad handle";
- case E_PSI_NOT_SIBO:
- return "invalid operation for RFSV16";
- default:
- return "Unknown error";
- }
+ENUM_DEFINITION(rfsv::errs, rfsv::E_PSI_GEN_NONE) {
+ stringRep.add(rfsv::E_PSI_GEN_NONE, "no error");
+ stringRep.add(rfsv::E_PSI_GEN_FAIL, "general");
+ stringRep.add(rfsv::E_PSI_GEN_ARG, "bad argument");
+ stringRep.add(rfsv::E_PSI_GEN_OS, "OS error");
+ stringRep.add(rfsv::E_PSI_GEN_NSUP, "not supported");
+ stringRep.add(rfsv::E_PSI_GEN_UNDER, "numeric underflow");
+ stringRep.add(rfsv::E_PSI_GEN_OVER, "numeric overflow");
+ stringRep.add(rfsv::E_PSI_GEN_RANGE, "numeric exception");
+ stringRep.add(rfsv::E_PSI_GEN_INUSE, "in use");
+ stringRep.add(rfsv::E_PSI_GEN_NOMEMORY, "out of memory");
+ stringRep.add(rfsv::E_PSI_GEN_NOSEGMENTS, "out of segments");
+ stringRep.add(rfsv::E_PSI_GEN_NOSEM, "out of semaphores");
+ stringRep.add(rfsv::E_PSI_GEN_NOPROC, "out of processes");
+ stringRep.add(rfsv::E_PSI_GEN_OPEN, "already open");
+ stringRep.add(rfsv::E_PSI_GEN_NOTOPEN, "not open");
+ stringRep.add(rfsv::E_PSI_GEN_IMAGE, "bad image");
+ stringRep.add(rfsv::E_PSI_GEN_RECEIVER, "receiver error");
+ stringRep.add(rfsv::E_PSI_GEN_DEVICE, "device error");
+ stringRep.add(rfsv::E_PSI_GEN_FSYS, "no filesystem");
+ stringRep.add(rfsv::E_PSI_GEN_START, "not ready");
+ stringRep.add(rfsv::E_PSI_GEN_NOFONT, "no font");
+ stringRep.add(rfsv::E_PSI_GEN_TOOWIDE, "too wide");
+ stringRep.add(rfsv::E_PSI_GEN_TOOMANY, "too many");
+ stringRep.add(rfsv::E_PSI_FILE_EXIST, "file already exists");
+ stringRep.add(rfsv::E_PSI_FILE_NXIST, "no such file");
+ stringRep.add(rfsv::E_PSI_FILE_WRITE, "write error");
+ stringRep.add(rfsv::E_PSI_FILE_READ, "read error");
+ stringRep.add(rfsv::E_PSI_FILE_EOF, "end of file");
+ stringRep.add(rfsv::E_PSI_FILE_FULL, "disk/serial read buffer full");
+ stringRep.add(rfsv::E_PSI_FILE_NAME, "invalid name");
+ stringRep.add(rfsv::E_PSI_FILE_ACCESS, "access denied");
+ stringRep.add(rfsv::E_PSI_FILE_LOCKED, "ressource locked");
+ stringRep.add(rfsv::E_PSI_FILE_DEVICE, "no such device");
+ stringRep.add(rfsv::E_PSI_FILE_DIR, "no such directory");
+ stringRep.add(rfsv::E_PSI_FILE_RECORD, "no such record");
+ stringRep.add(rfsv::E_PSI_FILE_RDONLY, "file is read-only");
+ stringRep.add(rfsv::E_PSI_FILE_INV, "invalid I/O operation");
+ stringRep.add(rfsv::E_PSI_FILE_PENDING, "I/O pending (not yet completed)");
+ stringRep.add(rfsv::E_PSI_FILE_VOLUME, "invalid volume name");
+ stringRep.add(rfsv::E_PSI_FILE_CANCEL, "cancelled");
+ stringRep.add(rfsv::E_PSI_FILE_ALLOC, "no memory for control block");
+ stringRep.add(rfsv::E_PSI_FILE_DISC, "unit disconnected");
+ stringRep.add(rfsv::E_PSI_FILE_CONNECT, "already connected");
+ stringRep.add(rfsv::E_PSI_FILE_RETRAN, "retransmission threshold exceeded");
+ stringRep.add(rfsv::E_PSI_FILE_LINE, "physical link failure");
+ stringRep.add(rfsv::E_PSI_FILE_INACT, "inactivity timer expired");
+ stringRep.add(rfsv::E_PSI_FILE_PARITY, "serial parity error");
+ stringRep.add(rfsv::E_PSI_FILE_FRAME, "serial framing error");
+ stringRep.add(rfsv::E_PSI_FILE_OVERRUN, "serial overrun error");
+ stringRep.add(rfsv::E_PSI_MDM_CONFAIL, "modem cannot connect to remote modem");
+ stringRep.add(rfsv::E_PSI_MDM_BUSY, "remote modem busy");
+ stringRep.add(rfsv::E_PSI_MDM_NOANS, "remote modem did not answer");
+ stringRep.add(rfsv::E_PSI_MDM_BLACKLIST, "number blacklisted by the modem");
+ stringRep.add(rfsv::E_PSI_FILE_NOTREADY, "drive not ready");
+ stringRep.add(rfsv::E_PSI_FILE_UNKNOWN, "unknown media");
+ stringRep.add(rfsv::E_PSI_FILE_DIRFULL, "directory full");
+ stringRep.add(rfsv::E_PSI_FILE_PROTECT, "write-protected");
+ stringRep.add(rfsv::E_PSI_FILE_CORRUPT, "media corrupt");
+ stringRep.add(rfsv::E_PSI_FILE_ABORT, "aborted operation");
+ stringRep.add(rfsv::E_PSI_FILE_ERASE, "failed to erase flash media");
+ stringRep.add(rfsv::E_PSI_FILE_INVALID, "invalid file for DBF system");
+ stringRep.add(rfsv::E_PSI_GEN_POWER, "power failure");
+ stringRep.add(rfsv::E_PSI_FILE_TOOBIG, "too big");
+ stringRep.add(rfsv::E_PSI_GEN_DESCR, "bad descriptor");
+ stringRep.add(rfsv::E_PSI_GEN_LIB, "bad entry point");
+ stringRep.add(rfsv::E_PSI_FILE_NDISC, "could not diconnect");
+ stringRep.add(rfsv::E_PSI_FILE_DRIVER, "bad driver");
+ stringRep.add(rfsv::E_PSI_FILE_COMPLETION, "operation not completed");
+ stringRep.add(rfsv::E_PSI_GEN_BUSY, "server busy");
+ stringRep.add(rfsv::E_PSI_GEN_TERMINATED, "terminated");
+ stringRep.add(rfsv::E_PSI_GEN_DIED, "died");
+ stringRep.add(rfsv::E_PSI_FILE_HANDLE, "bad handle");
+ stringRep.add(rfsv::E_PSI_NOT_SIBO, "invalid operation for RFSV16");
+ stringRep.add(rfsv::E_PSI_INTERNAL, "libplp internal error");
}