Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / accumulators / statistics / tail_variate.hpp @ 2486

 1 ///////////////////////////////////////////////////////////////////////////////  // tail_variate.hpp  //  // Copyright 2005 Eric Niebler, Michael Gauckler. 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_STAT_STATISTICS_TAIL_VARIATE_HPP_EAN_28_10_2005  #define BOOST_STAT_STATISTICS_TAIL_VARIATE_HPP_EAN_28_10_2005  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  namespace boost { namespace accumulators  {  namespace impl  {   ///////////////////////////////////////////////////////////////////////////////   // tail_variate_impl   template   struct tail_variate_impl   : accumulator_base   {   // for boost::result_of   typedef   typename detail::tail_range<   typename std::vector::const_iterator   , std::vector::iterator   >::type   result_type;   template   tail_variate_impl(Args const &args)   : variates(args[tag::tail::cache_size], args[parameter::keyword::get() | VariateType()])   {   }   template   void assign(Args const &args, std::size_t index)   {   this->variates[index] = args[parameter::keyword::get()];   }   template   result_type result(Args const &args) const   {   // getting the order result causes the indices vector to be sorted.   extractor > const some_tail = {};   return this->do_result(some_tail(args));   }   private:   template   result_type do_result(TailRng const &rng) const   {   return detail::make_tail_range(   this->variates.begin()   , rng.end().base().base() // the index iterator   , rng.begin().base().base() // (begin and end reversed because these are reverse iterators)   );   }   std::vector variates;   };  } // namespace impl  ///////////////////////////////////////////////////////////////////////////////  // tag::tail_variate<>  //  namespace tag  {   template   struct tail_variate   : depends_on >   {   /// INTERNAL ONLY   ///   typedef mpl::always > impl;   };   struct abstract_tail_variate   : depends_on<>   {   };   template   struct tail_weights   : depends_on >   {   /// INTERNAL ONLY   ///   typedef accumulators::impl::tail_variate_impl impl;   };   struct abstract_tail_weights   : depends_on<>   {   };  }  ///////////////////////////////////////////////////////////////////////////////  // extract::tail_variate  // extract::tail_weights  //  namespace extract  {   extractor const tail_variate = {};   extractor const tail_weights = {};   BOOST_ACCUMULATORS_IGNORE_GLOBAL(tail_variate)   BOOST_ACCUMULATORS_IGNORE_GLOBAL(tail_weights)  }  using extract::tail_variate;  using extract::tail_weights;  template  struct feature_of >   : feature_of  {  };  template  struct feature_of >  {   typedef tag::abstract_tail_weights type;  };  }} // namespace boost::accumulators  #endif