//-/////////////////////////////////////////////////////////////////////////////////////////////////
//-/////////////////////////////////////////////////////////////////////////////////////////////////
+// senf::StatisticsBase::Transform
+
+prefix_ senf::StatisticsBase::Transform::result_type
+senf::StatisticsBase::Transform::operator()(first_argument_type i)
+ const
+{
+ return i.second;
+}
+
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase::OutputEntry
prefix_ senf::StatisticsBase::OutputEntry::OutputEntry()
prefix_ senf::StatisticsBase::CollectorRange senf::StatisticsBase::collectors()
{
- return senf::make_transform_range(children_,__gnu_cxx::select2nd<Children::value_type>());
-}
-
-prefix_ senf::StatisticsBase::const_CollectorRange senf::StatisticsBase::collectors()
- const
-{
- return senf::make_transform_range(children_,__gnu_cxx::select2nd<Children::value_type>());
+ return senf::make_transform_range(children_, Transform());
}
prefix_ float senf::StatisticsBase::min()
return v_base();
}
-prefix_ senf::Statistics const & senf::StatisticsBase::base()
- const
-{
- return const_cast<StatisticsBase *>(this)->v_base();
-}
-
prefix_ std::string senf::StatisticsBase::path()
const
{
}
prefix_ senf::StatisticsData senf::StatisticsBase::data()
- const
{
return StatisticsData(min_, avg_, max_, dev_, 0);
}
{
typedef std::map<unsigned, Collector> Children;
- typedef boost::transform_iterator< ::__gnu_cxx::select2nd<Children::value_type>,
- Children::iterator > collector_iterator;
- typedef boost::transform_iterator< ::__gnu_cxx::select2nd<Children::value_type>,
- Children::const_iterator > collector_const_iterator;
+ struct Transform {
+ typedef Children::value_type & first_argument_type;
+ typedef Collector & result_type;
+ result_type operator()(first_argument_type i) const;
+ };
+
+ typedef boost::transform_iterator<Transform,Children::iterator> ValueIterator;
struct OutputEntry;
//-////////////////////////////////////////////////////////////////////////
// Types
- typedef boost::iterator_range<collector_iterator> CollectorRange;
- typedef boost::iterator_range<collector_const_iterator> const_CollectorRange;
+ typedef boost::iterator_range<ValueIterator> CollectorRange;
/** \brief Output connection interface
CollectorRange collectors(); ///< List all child collectors
/**< \returns iterator range of child collector
references */
- const_CollectorRange collectors() const;
- ///< List all child collectors
- /**< \returns const iterator range of child collector
- references */
Collector & collect(unsigned rank); ///< Register a new collector
/**< Adds a collector collecting \a rank values into each
\throws DuplicateRankException if a collector
collecting \a rank values already exists. */
- Statistics const & base() const; ///< Get const base statistics object
- /**< Returns the base statistics object as const reference.
- If this is a child collector, this will return the outermost
- statistics object, otherwise it will return
- \c *this. */
Statistics & base(); ///< Get base statistics object
/**< Returns the base statistics object. If this is
a child collector, this will return the outermost
\param[in] n size of sliding average window */
//\}
- StatisticsData data() const; ///< Get the Statistics data as senf::StatisticsData
- /**< Return a Statistic Data object containing values
- from this instance. */
+ StatisticsData data(); ///< Get the Statistics data as senf::StatisticsData
+ /**< Return a Statistic Data object containing values
+ from this instance.
+ */
//-////////////////////////////////////////////////////////////////////////