Newer
Older
PrismSoftware / ECTrainer1 / RingBuffer.h
#pragma once

#include <vector>

class RingBuffer
{
	float *_buffer;
	int _size;
	int _next;
	float _sum;

public:
	RingBuffer(int size) {
		_size = size;
		_next = 0;
		_sum = 0;
		_buffer = new float[_size];
		for (int i = 0; i < _size; i++) _buffer[i] = 0;
	}

	~RingBuffer() {
		delete[] _buffer;
	}

	void Push(float val) {
		_sum -= _buffer[_next];
		_buffer[_next] = val;
		_sum += val;
		_next = (_next + 1) % _size;
	}

	float Mean() {
		return _sum / _size;
	}
};