メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

RingBuf.h

説明を見る。
00001 #ifndef VR_BASE_RINGBUF_H
00002 #define VR_BASE_RINGBUF_H
00003 #include "Env.h"
00004 #include <vector>
00005 /** @file RingBuf.h リングバッファ(FIFOを実現するための環状バッファ)クラスの定義*/
00006 namespace Spr {
00007 
00008 
00009 template <class T>
00010 class UTRingBuffer:private std::vector<T>{
00011 public:
00012     typedef std::vector<T> container;
00013     typedef std::vector<T> base_class;
00014 protected:
00015     int cur;
00016 public:
00017     T zero;
00018     UTRingBuffer(int sz=0){
00019         cur = 0;
00020         size(sz);
00021     }
00022     int size() const{ return container::size(); }
00023     void size(int sz){
00024         container::resize(sz);
00025         if (cur >= size()) cur = 0;
00026     }
00027     void clear(){
00028         for(int i=0; i<size(); i++) begin()[i] = zero;
00029     }
00030     void inc(){
00031         cur ++;
00032         if (cur>=size()) cur = 0;
00033     }
00034     void dec(){
00035         cur --;
00036         if (cur<0) cur = size()-1;
00037     }
00038     T& operator[] (int i){
00039         i += cur + size();
00040         i = i % size();
00041         return begin()[i];
00042     }
00043 };
00044 
00045 }   //  namespace Spr
00046 
00047 #endif

Springheadに対してSun Apr 16 01:57:55 2006に生成されました。  doxygen 1.4.1