39 #define arcs_assert(a) (assert(a))
42 #define EventLogVar(a)
50template <
typename T,
unsigned long N,
bool M = true>
58 :
Buffer(), i(0), BufMutex()
61 if constexpr(M ==
true) pthread_mutex_init(&BufMutex, NULL);
81 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
85 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
92 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
94 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
103 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
108 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
117 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
119 if(N <= j) j = j - N;
122 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
131 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
138 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
145 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
147 if(N <= i) i = N - 1;
148 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
153 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
155 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
161 if constexpr(M ==
true) pthread_mutex_lock(&BufMutex);
162 for(
unsigned long j = 0; j < N; ++j)
Buffer[j] = u;
163 if constexpr(M ==
true) pthread_mutex_unlock(&BufMutex);
168 if constexpr(std::is_same_v<T, std::string>){
171 }
else if constexpr(std::is_floating_point_v<T>){
174 }
else if constexpr(std::is_integral_v<T>){
179 for(
size_t i = 0; i < N; ++i)
Buffer.at(i).FillAllZero();
187 pthread_mutex_t BufMutex;
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
#define arcs_assert(a)
ARCS用assertマクロ a : assert条件
Definition ARCSassert.hh:17
リングバッファクラス
Definition RingBuffer.hh:51
RingBuffer()
コンストラクタ
Definition RingBuffer.hh:57
T GetRelativeValueFromFirst(const unsigned long k)
バッファの最先端から k だけ後方側に戻ったところの値を取り出す関数
Definition RingBuffer.hh:100
T GetFinalValue(void)
バッファから最後尾の値を取り出す関数
Definition RingBuffer.hh:128
~RingBuffer()
デストラクタ
Definition RingBuffer.hh:74
void SetCounter(const unsigned long j)
カウンタを任意値に設定する関数
Definition RingBuffer.hh:144
void SetFirstValue(const T &u)
値をバッファの先頭に格納する関数
Definition RingBuffer.hh:80
void ResetCounter(void)
カウンタをリセットする関数
Definition RingBuffer.hh:152
T GetFirstValue(void)
値をバッファの現在の先頭から取り出す関数
Definition RingBuffer.hh:90
void ClearBuffer(void)
バッファのゼロクリア
Definition RingBuffer.hh:167
RingBuffer(RingBuffer &&r)
ムーブコンストラクタ
Definition RingBuffer.hh:67
void FillBuffer(const T &u)
バッファを指定値で埋める
Definition RingBuffer.hh:160
std::array< T, N > Buffer
リングバッファ
Definition RingBuffer.hh:53
T GetRelativeValueFromEnd(const unsigned long k)
バッファの最後尾から k だけ先頭側に進んだところの値を取り出す関数
Definition RingBuffer.hh:114