Repository navigation
Expand file tree
/
Copy pathfwd.hpp
More file actions
122 lines (87 loc) · 3 KB
/
Copy pathfwd.hpp
File metadata and controls
122 lines (87 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Copyright 2015-2017 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/core/use_default.hpp>
#include <boost/histogram/detail/attribute.hpp> // BOOST_HISTOGRAM_DETAIL_NODISCARD
#include <string>
#include <vector>
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 {};
#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED
namespace transform {
struct id;
struct log;
struct sqrt;
struct pow;
} // namespace transform
template <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_INVOKED
template <class T>
struct weight_type;
template <class T>
struct sample_type;
namespace accumulators {
template <class Value = double>
class sum;
template <class Value = double>
class weighted_sum;
template <class Value = double>
class mean;
template <class Value = double>
class weighted_mean;
} // namespace accumulators
struct 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 histograms
using 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<>>;
#ifndef BOOST_HISTOGRAM_DOXYGEN_INVOKED
template <class Axes, class Storage = default_storage>
class BOOST_HISTOGRAM_DETAIL_NODISCARD histogram;
#endif
} // namespace histogram
} // namespace boost
#endif