@@ -56,32 +56,19 @@ class Table {
56
56
const I& divide_by,
57
57
const I& first_index,
58
58
const I& last_index) noexcept ;
59
- template <typename ... Arguments>
60
- inline T build_sum_r (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s, const Arguments&... other) const noexcept ;
61
- template <typename ... Arguments>
62
- inline T build_sum_j (const Sector<I>* j, const Region<I>* s, const Arguments&... other) const noexcept ;
63
- template <typename ... Arguments>
64
- inline T build_sum_s (const Sector<I>* j, const Region<I>* s, const Arguments&... other) const noexcept ;
65
- template <typename Inner, typename ... Arguments>
66
- inline void add_sum (T& res, const std::vector<Inner*>& vec, const Arguments&... params) const noexcept ;
67
- template <typename Inner, typename ... Arguments>
68
- inline void add_sum (T& res, const std::vector<std::unique_ptr<Inner>>& vec, const Arguments&... params) const noexcept ;
69
- template <typename ... Arguments>
70
- inline void add_sum (T& res, const std::vector<std::unique_ptr<Sector<I>>>& vec, const bool , const Arguments&... params) const noexcept ;
71
- template <typename Inner, typename ... Arguments>
72
- inline void add_sum (T& res, const Inner* k, const Arguments&... params) const noexcept ;
73
- inline void add_sum (T& res, const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
74
- template <typename ... Arguments>
75
- inline T build_basesum_j (const Sector<I>* j, const Region<I>* s, const Arguments&... other) const noexcept ;
76
- template <typename Inner, typename ... Arguments>
77
- inline void add_basesum (T& res, const std::vector<Inner*>& vec, const Arguments&... params) const noexcept ;
78
- template <typename Inner, typename ... Arguments>
79
- inline void add_basesum (T& res, const std::vector<std::unique_ptr<Inner>>& vec, const Arguments&... params) const noexcept ;
80
- template <typename ... Arguments>
81
- inline void add_basesum (T& res, const std::vector<std::unique_ptr<Sector<I>>>& vec, const bool , const Arguments&... params) const noexcept ;
82
- template <typename Inner, typename ... Arguments>
83
- inline void add_basesum (T& res, const Inner* k, const Arguments&... params) const noexcept ;
84
- inline void add_basesum (T& res, const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
59
+
60
+ template <bool use_base>
61
+ void build_sum_source (T& res, const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
62
+ template <bool use_base, typename Arg_i, typename Arg_r>
63
+ void build_sum_target (T& res, Arg_i&& i, Arg_r&& r, const Sector<I>* j, const Region<I>* s) const noexcept ;
64
+ template <bool use_base, int c, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
65
+ void add_sum (T& res, const std::vector<Arg1*>& arg1, Arg2&& arg2, Arg3&& arg3, Arg4&& arg4) const noexcept ;
66
+ template <bool use_base, int c, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
67
+ void add_sum (T& res, const std::vector<std::unique_ptr<Arg1>>& arg1, Arg2&& arg2, Arg3&& arg3, Arg4&& arg4) const noexcept ;
68
+ template <bool use_base, int c, typename Arg3, typename Arg4>
69
+ void add_sum (T& res, const std::vector<std::unique_ptr<Sector<I>>>& arg1, bool , Arg3&& arg3, Arg4&& arg4) const noexcept ;
70
+ template <bool use_base, int c, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
71
+ void add_sum (T& res, const Arg1* arg1, Arg2&& arg2, Arg3&& arg3, Arg4&& arg4) const noexcept ;
85
72
86
73
public:
87
74
Table () {}
@@ -91,8 +78,6 @@ class Table {
91
78
inline const IndexSet<I>& index_set () const { return index_set_; }
92
79
void insert_subsectors (const std::string& name, const std::vector<std::string>& subsectors);
93
80
void insert_subregions (const std::string& name, const std::vector<std::string>& subregions);
94
- T sum (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
95
- T basesum (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
96
81
void write_to_csv (std::ostream& indicesstream, std::ostream& datastream) const ;
97
82
void write_to_mrio (std::ostream& outstream) const ;
98
83
#ifdef LIBMRIO_WITH_NETCDF
@@ -104,6 +89,9 @@ class Table {
104
89
void read_from_netcdf (const std::string& filename, const T& threshold);
105
90
#endif
106
91
92
+ T sum (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
93
+ T basesum (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) const noexcept ;
94
+
107
95
inline T& at (const Sector<I>* i, const Region<I>* r, const Sector<I>* j, const Region<I>* s) {
108
96
assert (index_set_.at (i, r) >= 0 );
109
97
assert (index_set_.at (j, s) >= 0 );
0 commit comments