source: cheroxy/trunk/include/CRXException.h@ 35

Last change on this file since 35 was 35, checked in by cheese, 11 years ago

#1 add debugging message

File size: 2.6 KB
Line 
1/**
2 * CRXException.h
3 */
4#ifndef __CRXEXCEPTION_H__
5#define __CRXEXCEPTION_H__
6
7#include <string>
8#include <stdarg.h>
9
10#ifdef _WIN32
11# define __func__ __FUNCTION__
12#endif
13
14#ifdef _DEBUG
15#include <stdio.h>
16#include <ctype.h>
17#define CRX_DEBUG_TRACE(FMT, ...) \
18 do{ \
19 fprintf(stderr,"[DEBUG][%s %s(%d)] ",__FILE__,__func__,__LINE__); \
20 fprintf(stderr,FMT,##__VA_ARGS__); \
21}while(0)
22#define CRX_DEBUG_TRACE_BIN(__VAL,__LEN,FMT,...) \
23 CRX_DEBUG_TRACE(FMT,##__VA_ARGS__); \
24 do{ \
25 int __i, __j; \
26 unsigned char * __U_V = (unsigned char *)__VAL; \
27 for (__i=0 ; __i<__LEN; __i+=16) \
28 { \
29 fprintf(stderr, "[DEBUG][%s %s(%d)] ",__FILE__,__func__,__LINE__); \
30 fprintf(stderr, "%06x : ", __i); \
31 for (__j=0 ; __j<16 ; __j++) \
32 { \
33 if (__i+__j < __LEN) \
34 fprintf(stderr, "%02x ", __U_V[__i+__j]); \
35 else \
36 fprintf(stderr, " "); \
37 } \
38 fprintf(stderr," "); \
39 for (__j=0 ; __j<16 ; __j++) \
40 { \
41 if (__i+__j < __LEN) \
42 fprintf(stderr,"%c", \
43 ' ' <= __U_V[__i+__j] && __U_V[__i+__j] <= '~' ? __U_V[__i+__j] : '.'); \
44 } \
45 fprintf(stderr,"\n"); \
46 } \
47 }while(0)
48#endif
49
50#define CRX_ERROR_SET(__CODE,__FMT,...) \
51 do { \
52 SetErrorCode (__CODE); \
53 SetErrorMessage (__FILE__,__func__,__LINE__,__FMT,##__VA_ARGS__); \
54 } while (0)
55
56#define CRX_ADD_SUBCLASS_ERROR(__SUB_CLASS) \
57 do { \
58 AddMessage (__SUB_CLASS.GetErrorMessage ().c_str ()); \
59 } while (0)
60
61class CRXException
62{
63private:
64 std::string mMessage;
65 int mCode;
66
67public:
68 CRXException (void);
69 virtual ~CRXException (void);
70
71public:
72 /* get */
73 int GetErrorCode (void) const;
74
75 std::string GetErrorMessage (void) const;
76
77 int GetSystemErrorCode (void) const;
78
79 /* set */
80 void SetErrorCode (const int aCode);
81
82 void SetErrorMessage (const char * aFile,
83 const char * aFunction,
84 const int aLine,
85 const char * aFormat, ...);
86
87 std::string MakeErrorMessage (const char * aFile,
88 const char * aFunction,
89 const int aLine,
90 const char * aFormat,
91 va_list aVaList);
92
93 void AddMessage (const char * aMessage);
94};
95
96#endif // #ifndef __CRXEXCEPTION_H__
Note: See TracBrowser for help on using the repository browser.