⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 meter.h

📁 show to use C/C++ do system test.
💻 H
字号:
#ifndef	METER_H
#define	METER_H


class  _METER {
public:
	uint32   get_count();
	real64   get_interval();
	real64   get_sum();
	real64   get_sumofsquare();
	real64   get_average();
	real64   get_variance();
protected:
	_METER()  { _construct(); }
	virtual ~_METER()  { _destruct(); }
	int      _construct();
	int      _destruct();
	int      _reset();
	uint08    _state();
	real64   _timestart();
	real64   _timeclose();
	real64   _period();
	real64   _accumsum( real64 value );
	real64   _accumsquare( real64 value );
	real64   _timeaverage( real64 value );
	int      _gather_statistics( real64 value, real64 assign );
private:
	void   *_data;
};


template <class T>
class  METER : public _METER {
public:
	METER() : _value(0), _minimum(0), _maximum(0)  {}
	virtual ~METER()  {}
	T     get_value()   { return _value; }
	T     get_minimum()  { return _minimum; }
	T     get_maximum()  { return _maximum; }
	T     operator = (T assign)  { return _set_value( assign ); }
	T     operator += (T addend)  { return _set_value( _value + addend ); }
	T     operator -= (T subend)  { return _set_value( _value - subend ); }
	T     operator *= (T multiplier)  { return _set_value( _value * multiplier ); }
	T     operator /= (T divisor)  { return _set_value( _value / divisor ); }
	T     operator ++ ()  { return _set_value( _value + 1 ); }
	T     operator -- ()  { return _set_value( _value - 1 ); }
	operator T() { return _value; }
	void     clear()  { _value = 0; reset(); }
	void     reset()  { _minimum = 0; _maximum = 0; _reset(); }
	real64   get_accumsum()  { return _accumsum( (real64)_value ); }
	real64   get_accumsquare()  { return _accumsquare( (real64)_value ); }
	real64   get_timeaverage()  { return _timeaverage( (real64)_value ); }
private:
	T   _value;
	T   _minimum;
	T   _maximum;
	T   _set_value( T assign );
};


template <class T>
T  METER<T>::_set_value( T assign )
{
	if (_state() == 0) {
		_minimum = assign;
		_maximum = assign;
	}
	else {
		if (assign < _minimum)
			_minimum = assign;
		if (assign > _maximum)
			_maximum = assign;
	}
	_gather_statistics( (real64)_value, (real64)assign );
	_value = assign;

	return _value;
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -