// 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_ATTRIBUTE_NODISCARD #include #include namespace boost { namespace histogram { /// Tag type to indicate use of a default type using boost::use_default; namespace axis { /// Integral type for axis indices using index_type = int; /// Real type for axis indices using real_index_type = double; /// Empty metadata type struct null_type { template void serialize(Archive&, unsigned /* version */) {} }; /// Another alias for an empty metadata type using empty_type = null_type; #ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED namespace transform { struct id; struct log; struct sqrt; struct pow; } // namespace transform template class regular; template class integer; template > class variable; template > class category; template class variant; #endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED } // namespace axis #ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED template struct weight_type; template struct sample_type; namespace accumulators { template class sum; template class weighted_sum; template class mean; template class weighted_mean; template class thread_safe; template struct is_thread_safe : std::false_type {}; template struct is_thread_safe> : std::true_type {}; } // namespace accumulators struct unsafe_access; template > class unlimited_storage; template class storage_adaptor; #endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED /// Vector-like storage for fast zero-overhead access to cells. template > using dense_storage = storage_adaptor>; /// Default storage, optimized for unweighted histograms using default_storage = unlimited_storage<>; /// Dense storage which tracks sums of weights and a variance estimate. using weight_storage = dense_storage>; /// Dense storage which tracks means of samples in each cell. using profile_storage = dense_storage>; /// Dense storage which tracks means of weighted samples in each cell. using weighted_profile_storage = dense_storage>; #ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED template class BOOST_ATTRIBUTE_NODISCARD histogram; #endif } // namespace histogram } // namespace boost #endif