| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | ///////////////////////////////////////////////////////////////////////////////// count.hpp////  Copyright 2005 Eric Niebler. Distributed under the Boost//  Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_ACCUMULATORS_STATISTICS_COUNT_HPP_EAN_28_10_2005#define BOOST_ACCUMULATORS_STATISTICS_COUNT_HPP_EAN_28_10_2005#include <boost/mpl/always.hpp>#include <boost/accumulators/framework/accumulator_base.hpp>#include <boost/accumulators/framework/extractor.hpp>#include <boost/accumulators/framework/depends_on.hpp>#include <boost/accumulators/statistics_fwd.hpp>namespace boost { namespace accumulators{namespace impl{    ///////////////////////////////////////////////////////////////////////////////    // count_impl    struct count_impl      : accumulator_base    {        // for boost::result_of        typedef std::size_t result_type;        count_impl(dont_care)          : cnt(0)        {        }        void operator ()(dont_care)        {            ++this->cnt;        }        result_type result(dont_care) const        {            return this->cnt;        }        // make this accumulator serializeable        template<class Archive>        void serialize(Archive & ar, const unsigned int file_version)        {             ar & cnt;        }    private:        std::size_t cnt;    };} // namespace impl///////////////////////////////////////////////////////////////////////////////// tag::count//namespace tag{    struct count      : depends_on<>    {        /// INTERNAL ONLY        ///        typedef mpl::always<accumulators::impl::count_impl> impl;    };}///////////////////////////////////////////////////////////////////////////////// extract::count//namespace extract{    extractor<tag::count> const count = {};    BOOST_ACCUMULATORS_IGNORE_GLOBAL(count)}using extract::count;}} // namespace boost::accumulators#endif
 |