You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whellvalue/3part/Cyclops/include/OnlineStatisticNode.h

63 lines
1.3 KiB
C

5 years ago
/*! \file OnlineStatisticNode.h
\brief A brief file description.
A more elaborated file description.
Created: 2015/07/16, author: Jin Bingwen.
*/
#ifndef __OnlineStatisticNode_h_
#define __OnlineStatisticNode_h_
#include "CyclopsVersion.h"
#include "StatisticEle.h"
#include "CyclopsLock.h"
class OnlineStatisticNode : public StatisticsNode
{
public:
OnlineStatisticNode();
typedef std::shared_ptr<OnlineStatisticNode> Ptr;
DECL_GET_INSTANCE(OnlineStatisticNode::Ptr)
virtual void compute();
virtual void push_back(double val);
virtual void pop_front();
virtual void pop_back();
virtual void clear(bool clearSource = true);
bool getIsSaveSource() const { return mIsSaveSource; }
virtual void setIsSaveSource(bool val);
// 0: queue size unlimited
virtual void setFixedSize(size_t nSize);
int getFixedSize() const { return mFixedSize; }
virtual std::list<double> getSourceInList(int num = 0);
protected:
double mSum;
double mSqrSum;
bool mIsSaveSource;
size_t mFixedSize;
void computeSumSqrSum();
void computeMeanStdDev();
void computeMinMax();
void pop(double val, bool fromFront);
void _compute();
void _push_back(double val);
void _pop_front();
void _pop_back();
void _clear(bool clearSource = true);
private:
CyclopsLock mLock;
};
#endif // __OnlineStatisticNode_h_