introduced a StatisticsData Object to hold the aggregated stats data provided by...
mtk [Tue, 11 Jan 2011 20:40:35 +0000 (20:40 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1761 270642c3-0616-0410-b53a-bc976706d245

senf/Utils/StatisticAccumulator.ct
senf/Utils/StatisticAccumulator.hh
senf/Utils/Statistics.cci
senf/Utils/Statistics.hh

index adefd6c..e2c7497 100644 (file)
@@ -87,6 +87,16 @@ prefix_ void senf::StatisticAccumulator<T>::clear()
     sum_ = min_ = max_ = 0;
 }
 
+template <class T>
+prefix_ void senf::StatisticAccumulator<T>::data( StatisticsData &data_) const
+{
+    data_.min = (float) min_;
+    data_.avg = avg();
+    data_.max = (float) max_;
+    data_.stddev = stddev();
+    data_.count = count;
+}
+
 
 ///////////////////////////////ct.e////////////////////////////////////////
 #undef prefix_
index 388ef99..8bd2b32 100644 (file)
@@ -46,6 +46,14 @@ namespace senf {
         \ingroup senf_statistics
         */
 
+  struct StatisticsData{
+    float min;
+    float max;
+    float avg;
+    float stddev;
+    boost::uint32_t count;
+  };
+
     template <class T>
     class StatisticAccumulator
     {
@@ -80,6 +88,9 @@ namespace senf {
         boost::uint32_t count() const;
         ///< Returns count of accumulated values.
         /**< This method returns count of accumulated values of the current accumulation.*/
+        void data( StatisticsData & data_) const;
+        ///< Returns the accumulated data as a tuple
+        /**< This method returns the accumulated information as a tuple.*/  
 
     private:
         T sum_squared_;
@@ -96,7 +107,6 @@ namespace senf {
     typedef StatisticAccumulator<int> StatisticAccumulatorInt;
     typedef StatisticAccumulator<float> StatisticAccumulatorFloat;
 
-
 }
 ///////////////////////////////hh.e////////////////////////////////////////
 //#include "StatisticAccumulator.cci"
index d522f9f..a9e51eb 100644 (file)
@@ -181,6 +181,11 @@ prefix_ void senf::Statistics::operator()(float min, float avg, float max, float
     enter(1, min, avg, max, dev);
 }
 
+prefix_ void senf::Statistics::operator()(StatisticsData const & data)
+{
+  enter(1, data.min, data.avg, data.max, data.stddev);
+}
+
 prefix_ void senf::Statistics::operator()(float value, float dev)
 {
     enter(1, value, value, value, dev);
index 3093b1c..41ead1a 100644 (file)
@@ -465,6 +465,10 @@ namespace senf {
                                         ///< Same as operator() with \a min == \a avg == \a max
                                         /**< Provided so a Statistics instance can be directly used
                                              as a signal target. */
+        void operator()(StatisticsData const & data);
+                                        ///< Same as operator(), but imports statistics data from a StatisticsData object
+                                        /**< Provided so a Statistics instance can be directly used
+                                             as a signal target. */
         template <class Value>
         void operator()(unsigned n, StatisticAccumulator<Value> & sa);
                                         ///< Same as operator() gathers values from StatisticAccumulator