00001 00002 #ifndef __JBXL_CPP_LOG_RING_BUFFER_H__ 00003 #define __JBXL_CPP_LOG_RING_BUFFER_H__ 00004 00005 00006 00015 #include "xtools.h" 00016 00017 00018 // 00019 namespace jbxl { 00020 00021 00022 // kindData 00023 #define LOG_RB_UNKNOWN_DATA 0 00024 #define LOG_RB_TEXT_DATA 1 00025 #define LOG_RB_TEXT_HALF_DATA 2 00026 #define LOG_RB_BINARY_DATA 3 00027 #define LOG_RB_BINHEX_DATA 4 00028 00029 // inputSrc 00030 #define LOG_RB_MESG 0 00031 #define LOG_RB_MESSAGE 0 00032 #define LOG_RB_INFO 1 00033 #define LOG_RB_INFORMATION 1 00034 #define LOG_RB_DEBUG 2 00035 #define LOG_RB_WARN 3 00036 #define LOG_RB_WARNING 3 00037 #define LOG_RB_ERR 4 00038 #define LOG_RB_ERROR 4 00039 00040 00041 00042 class CLogRingBuffer 00043 { 00044 public: 00045 CLogRingBuffer(int size) { init(size);} 00046 virtual ~CLogRingBuffer(void); 00047 00048 public: 00049 int init(int size); 00050 void clear(void); 00051 void putRingBuffer(Buffer buf, int input=LOG_RB_MESG, int kind=LOG_RB_UNKNOWN_DATA); 00052 void rewriteBinHexRingBuffer(int n, int input); 00053 void putRingFormat(int input, char* fmt, ...); 00054 void putRingFormat(int input, char* fmt, va_list args); 00055 00056 Buffer getRingBuffer(void); // バッファの先頭を読み込む.データポインタを移動させる. 00057 Buffer getRingBuffer(int pos); // バッファの位置を指定して読み込む.データポインタの移動無し. 00058 00059 int getMaxBufSize(void) { return maxBufSize;} 00060 int getMaxLineX(void) { return maxLineX;} 00061 int getMaxLineY(void) { return maxLineY;} 00062 int getTotalSize(void) { return tlDataSize;} 00063 int getLastPosition(void) { return wPos;} 00064 00065 int getLengthX(int n) { if(n<0) n+=maxBufSize; return (int)strlen((const char*)pBuf[n%maxBufSize].buf);} 00066 int getKindData(int n) { if(n<0) n+=maxBufSize; return kindData[n%maxBufSize];} 00067 00068 public: 00069 Buffer* pBuf; 00070 00071 protected: 00072 int maxBufSize; // Buffer の数.ラインの数. 00073 int tlDataSize; 00074 00075 int maxLineX; // コンテキストのXサイズ 00076 int maxLineY; // コンテキストのYサイズ 00077 int indentSize; // 00078 00079 int rPos; 00080 int wPos; 00081 00082 int* kindData; // 00083 int* inputSrc; // 00084 }; 00085 00086 00087 00088 } // namespace 00089 00090 00091 #endif 00092