| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | // Copyright 2015-2019 Hans Dembinski//// 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_HISTOGRAM_FWD_HPP#define BOOST_HISTOGRAM_FWD_HPP/**  \file boost/histogram/fwd.hpp  Forward declarations, tag types and type aliases.*/#include <boost/config.hpp> // BOOST_ATTRIBUTE_NODISCARD#include <boost/core/use_default.hpp>#include <vector>namespace boost {namespace histogram {/// Tag type to indicate use of a default typeusing boost::use_default;namespace axis {/// Integral type for axis indicesusing index_type = int;/// Real type for axis indicesusing real_index_type = double;/// Empty metadata typestruct null_type {  template <class Archive>  void serialize(Archive&, unsigned /* version */) {}};/// Another alias for an empty metadata typeusing empty_type = null_type;// some forward declarations must be hidden from doxygen to fix the reference docu :(#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKEDnamespace transform {struct id;struct log;struct sqrt;struct pow;} // namespace transformtemplate <class Value = double, class Transform = use_default,          class MetaData = use_default, class Options = use_default>class regular;template <class Value = int, class MetaData = use_default, class Options = use_default>class integer;template <class Value = double, class MetaData = use_default, class Options = use_default,          class Allocator = std::allocator<Value>>class variable;template <class Value = int, class MetaData = use_default, class Options = use_default,          class Allocator = std::allocator<Value>>class category;template <class... Ts>class variant;#endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED} // namespace axis#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKEDtemplate <class T>struct weight_type;template <class T>struct sample_type;namespace accumulators {template <class ValueType = double>class count;template <class ValueType = double>class sum;template <class ValueType = double>class weighted_sum;template <class ValueType = double>class mean;template <class ValueType = double>class weighted_mean;template <class T>class thread_safe;template <class T>struct is_thread_safe : std::false_type {};template <class T>struct is_thread_safe<thread_safe<T>> : std::true_type {};} // namespace accumulatorsstruct unsafe_access;template <class Allocator = std::allocator<char>>class unlimited_storage;template <class T>class storage_adaptor;#endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED/// Vector-like storage for fast zero-overhead access to cells.template <class T, class A = std::allocator<T>>using dense_storage = storage_adaptor<std::vector<T, A>>;/// Default storage, optimized for unweighted histogramsusing default_storage = unlimited_storage<>;/// Dense storage which tracks sums of weights and a variance estimate.using weight_storage = dense_storage<accumulators::weighted_sum<>>;/// Dense storage which tracks means of samples in each cell.using profile_storage = dense_storage<accumulators::mean<>>;/// Dense storage which tracks means of weighted samples in each cell.using weighted_profile_storage = dense_storage<accumulators::weighted_mean<>>;// some forward declarations must be hidden from doxygen to fix the reference docu :(#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKEDtemplate <class Axes, class Storage = default_storage>class BOOST_ATTRIBUTE_NODISCARD histogram;#endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED} // namespace histogram} // namespace boost#endif
 |