4444
4545#include < algorithm>
4646#include < cassert>
47+ #include < initializer_list>
4748#include < numeric>
4849#include < ostream>
4950#include < type_traits>
@@ -53,7 +54,7 @@ namespace Opm
5354{
5455
5556
56- template <class >
57+ template <class >
5758inline constexpr bool always_false_v = false ;
5859
5960// Poison iterator is a helper class that will allow for compilation only when it is not used.
@@ -132,10 +133,10 @@ struct PoisonIterator {
132133 IntegerIter rowsize_beg, IntegerIter rowsize_end)
133134 : data_(data_beg, data_end)
134135 {
135- setRowStartsFromSizes (rowsize_beg, rowsize_end);
136+ setRowStartsFromSizes (rowsize_beg, rowsize_end);
136137 }
137138
138- SparseTable (Storage<T>&& data, Storage<int >&& row_starts)
139+ SparseTable (Storage<T>&& data, Storage<int >&& row_starts)
139140 : data_(std::move(data))
140141 , row_start_(std::move(row_starts))
141142 {
@@ -148,8 +149,18 @@ struct PoisonIterator {
148149 }
149150
150151
152+ // / Initializer list constructor for easy construction of small SparseTables.
153+ SparseTable (std::initializer_list<std::initializer_list<T>> initlist) requires (std::is_same_v<Storage<T>, std::vector<T>>)
154+ {
155+ row_start_.push_back (0 );
156+ for (const auto & row : initlist) {
157+ data_.insert (data_.end (), row);
158+ row_start_.push_back (data_.size ());
159+ }
160+ }
161+
151162 // / Sets the table to contain the given data, organized into
152- // / rows as indicated by the given row sizes.
163+ // / rows as indicated by the given row sizes.
153164 // / \param data_beg The start of the table data.
154165 // / \param data_end One-beyond-end of the table data.
155166 // / \param rowsize_beg The start of the row length data.
@@ -158,8 +169,8 @@ struct PoisonIterator {
158169 void assign (DataIter data_beg, DataIter data_end,
159170 IntegerIter rowsize_beg, IntegerIter rowsize_end)
160171 {
161- data_.assign (data_beg, data_end);
162- setRowStartsFromSizes (rowsize_beg, rowsize_end);
172+ data_.assign (data_beg, data_end);
173+ setRowStartsFromSizes (rowsize_beg, rowsize_end);
163174 }
164175
165176
0 commit comments