Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // max.hpp Chris@16: // Chris@16: // Copyright 2005 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_ACCUMULATORS_STATISTICS_MAX_HPP_EAN_28_10_2005 Chris@16: #define BOOST_ACCUMULATORS_STATISTICS_MAX_HPP_EAN_28_10_2005 Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace accumulators Chris@16: { Chris@16: Chris@16: namespace impl Chris@16: { Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // max_impl Chris@16: template Chris@16: struct max_impl Chris@16: : accumulator_base Chris@16: { Chris@16: // for boost::result_of Chris@16: typedef Sample result_type; Chris@16: Chris@16: template Chris@16: max_impl(Args const &args) Chris@16: : max_(numeric::as_min(args[sample | Sample()])) Chris@16: { Chris@16: } Chris@16: Chris@16: template Chris@16: void operator ()(Args const &args) Chris@16: { Chris@16: numeric::max_assign(this->max_, args[sample]); Chris@16: } Chris@16: Chris@16: result_type result(dont_care) const Chris@16: { Chris@16: return this->max_; Chris@16: } Chris@16: Chris@16: private: Chris@16: Sample max_; Chris@16: }; Chris@16: Chris@16: } // namespace impl Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // tag::max Chris@16: // Chris@16: namespace tag Chris@16: { Chris@16: struct max Chris@16: : depends_on<> Chris@16: { Chris@16: /// INTERNAL ONLY Chris@16: /// Chris@16: typedef accumulators::impl::max_impl impl; Chris@16: }; Chris@16: } Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // extract::max Chris@16: // Chris@16: namespace extract Chris@16: { Chris@16: extractor const max = {}; Chris@16: Chris@16: BOOST_ACCUMULATORS_IGNORE_GLOBAL(max) Chris@16: } Chris@16: Chris@16: using extract::max; Chris@16: Chris@16: }} // namespace boost::accumulators Chris@16: Chris@16: #endif