/usr/include/boost/histogram
Edit: /usr/include/boost/histogram/fwd.hpp (4778B)
// 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
#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;
// some forward declarations must be hidden from doxygen to fix the reference docu :(
#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 boolean;
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 count;
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>;
// some forward declarations must be hidden from doxygen to fix the reference docu :(
#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED
template
class BOOST_ATTRIBUTE_NODISCARD histogram;
#endif // BOOST_HISTOGRAM_DOXYGEN_INVOKED
namespace detail {
/* Most of the histogram code is generic and works for any number of axes. Buffers with a
* fixed maximum capacity are used in some places, which have a size equal to the rank of
* a histogram. The buffers are statically allocated to improve performance, which means
* that they need a preset maximum capacity. 32 seems like a safe upper limit for the rank
* (you can nevertheless increase it here if necessary): the simplest non-trivial axis has
* 2 bins; even if counters are used which need only a byte of storage per bin, 32 axes
* would generate of 4 GB.
*/
#ifndef BOOST_HISTOGRAM_DETAIL_AXES_LIMIT
#define BOOST_HISTOGRAM_DETAIL_AXES_LIMIT 32
#endif
template
struct buffer_size_impl
: std::integral_constant {};
template
struct buffer_size_impl>
: std::integral_constant {};
template
using buffer_size = typename buffer_size_impl::type;
} // namespace detail
} // namespace histogram
} // namespace boost
#endif