Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

wverror.cc

Go to the documentation of this file.
00001 /* 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2002 Net Integration Technologies, Inc. 00004 * 00005 * A class for managing error numbers and strings. See wverror.h. 00006 */ 00007 #include "wverror.h" 00008 #include <assert.h> 00009 00010 #ifdef _WIN32 00011 #include "windows.h" 00012 #endif 00013 00014 WvError::~WvError() 00015 { 00016 // nothing special 00017 } 00018 00019 00020 WvString WvError::errstr() const 00021 { 00022 if (errnum == -1) 00023 { 00024 assert(!!errstring); 00025 return errstring; 00026 } 00027 else 00028 { 00029 #ifndef _WIN32 00030 return strerror(errnum); 00031 #else 00032 char msg[4096]; 00033 const HMODULE module = GetModuleHandle("winsock.dll"); 00034 DWORD result = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, module, errnum, 0, msg, sizeof(msg), 0); 00035 if (result) 00036 return msg; 00037 else 00038 { 00039 DWORD e = GetLastError(); 00040 return "Unknown error"; 00041 } 00042 #endif 00043 } 00044 } 00045 00046 00047 void WvError::seterr(int _errnum) 00048 { 00049 if (!errnum) 00050 errnum = _errnum; 00051 } 00052 00053 00054 void WvError::seterr(WvStringParm specialerr) 00055 { 00056 if (!errnum) 00057 { 00058 errstring = specialerr; 00059 seterr(-1); 00060 } 00061 } 00062 00063 00064 void WvError::seterr(const WvError &err) 00065 { 00066 if (err.geterr() > 0) 00067 seterr(err.geterr()); 00068 else if (err.geterr() < 0) 00069 seterr(err.errstr()); 00070 }

Generated on Tue Oct 5 01:09:20 2004 for WvStreams by doxygen 1.3.7