00001 #ifndef __JBXL_CPP_RINGBUFFER_H_ 00002 #define __JBXL_CPP_RINGBUFFER_H_ 00003 00004 00005 00014 #include "tools++.h" 00015 00016 00017 00018 namespace jbxl { 00019 00020 00021 00022 class CRingBuffer 00023 { 00024 public: 00025 CRingBuffer(void) { init_data();} 00026 CRingBuffer(int rsz, int dsz) { init(rsz, dsz);} 00027 virtual ~CRingBuffer(void) { free();} 00028 00029 protected: 00030 void** buf; 00031 00032 int bufsz; 00033 int datasz; 00034 int spoint; 00035 int epoint; 00036 int datano; 00037 00038 public: 00039 int state; 00040 BOOL enable; 00041 00042 00043 protected: 00044 void init_data(void); 00045 00046 public: 00047 BOOL init(int ring_size, int data_size); 00048 void free(void); 00049 void clear(void); 00050 00051 void* get(void); 00052 void* get(int pos); 00053 void put(void* ptr); 00054 void put(void* ptr, int pos); 00055 00056 }; 00057 00058 00059 00060 00061 } // namespace 00062 00063 00064 00065 #endif