//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: average_stack.inl
//      Краткое описание: Стек для хранения значений и получения среднего
//

namespace ker
{
	template <typename T>
	inline AverageStack<T>::AverageStack(const unsigned int size)
	{
		this->size = size;
		values.resize(size);
		cur_pos = 0;
	};

	template <typename T>
	inline AverageStack<T>::~AverageStack()
	{
		values.clear();
		cur_pos = 0;
		size = 0;
	};

	template <typename T>
	inline void AverageStack<T>::push(const T& value)
	{
		if(cur_pos == size - 1)
			cur_pos = 0;
		values[cur_pos] = value;
		cur_pos++;
	};

	template <typename T>
	inline T AverageStack<T>::getAverage() const
	{
		T average = 0;
		for(unsigned int i = 0; i < size; ++i)
			average += values[i];
		return average/size;
	};
};