17 #include <osg/Referenced>
18 #include <OpenThreads/Mutex>
19 #include <OpenThreads/ScopedLock>
32 Stats(
const std::string& name);
34 Stats(
const std::string& name,
unsigned int numberOfFrames);
36 void setName(
const std::string& name) { _name = name; }
37 const std::string&
getName()
const {
return _name; }
39 void allocate(
unsigned int numberOfFrames);
41 unsigned int getEarliestFrameNumber()
const {
return _latestFrameNumber < static_cast<unsigned int>(_attributeMapList.size()) ? 0 : _latestFrameNumber - static_cast<unsigned int>(_attributeMapList.size()) + 1; }
47 bool setAttribute(
unsigned int frameNumber,
const std::string& attributeName,
double value);
49 inline bool getAttribute(
unsigned int frameNumber,
const std::string& attributeName,
double& value)
const
52 return getAttributeNoMutex(frameNumber, attributeName, value);
55 bool getAveragedAttribute(
const std::string& attributeName,
double& value,
bool averageInInverseSpace=
false)
const;
57 bool getAveragedAttribute(
unsigned int startFrameNumber,
unsigned int endFrameNumber,
const std::string& attributeName,
double& value,
bool averageInInverseSpace=
false)
const;
62 return getAttributeMapNoMutex(frameNumber);
68 return getAttributeMapNoMutex(frameNumber);
73 void collectStats(
const std::string& str,
bool flag) { _collectMap[str] = flag; }
79 CollectMap::const_iterator itr = _collectMap.find(str);
80 return (itr != _collectMap.end()) ? itr->second :
false;
83 void report(std::ostream& out,
const char* indent=0)
const;
84 void report(std::ostream& out,
unsigned int frameNumber,
const char* indent=0)
const;
90 bool getAttributeNoMutex(
unsigned int frameNumber,
const std::string& attributeName,
double& value)
const;
92 AttributeMap& getAttributeMapNoMutex(
unsigned int frameNumber);
93 const AttributeMap& getAttributeMapNoMutex(
unsigned int frameNumber)
const;
99 if (frameNumber > _latestFrameNumber)
return -1;
102 if (frameNumber < getEarliestFrameNumber())
return -1;
104 if (frameNumber >= _baseFrameNumber)
return frameNumber - _baseFrameNumber;
105 else return static_cast<int>(_attributeMapList.size()) - (_baseFrameNumber-frameNumber);
OpenThreads::Mutex _mutex
std::map< std::string, bool > CollectMap
unsigned int _baseFrameNumber
This class provides an object-oriented thread mutex interface.
unsigned int getEarliestFrameNumber() const
int getIndex(unsigned int frameNumber) const
void collectStats(const std::string &str, bool flag)
AttributeMap _invalidAttributeMap
unsigned int _latestFrameNumber
AttributeMapList _attributeMapList
bool collectStats(const std::string &str) const
const AttributeMap & getAttributeMap(unsigned int frameNumber) const
std::map< std::string, double > AttributeMap
const std::string & getName() const
unsigned int getLatestFrameNumber() const
AttributeMap & getAttributeMap(unsigned int frameNumber)
bool getAttribute(unsigned int frameNumber, const std::string &attributeName, double &value) const
std::vector< AttributeMap > AttributeMapList
void setName(const std::string &name)