30#include <unordered_set>
35template<
class Ch,
class Tr, std::size_t... Is>
37 const std::index_sequence<Is...> is)
40 ((os << (i++==0?
"" :
",") << Is), ...);
48template<
class Ch,
class Tr, std::size_t... Is>
50 const std::index_sequence<Is...>& is)
58template<
class Ch,
class Tr,
typename... args>
60 std::vector<args...>& vec)
63 for(
auto it = vec.begin(); it != vec.end(); ++it){
64 os << (it==vec.begin()?
"" :
",") << *it;
70template<
class Ch,
class Tr,
class T, std::
size_t N>
72 std::array<T,N>& array)
75 for(
auto it = array.begin(); it != array.end(); ++it){
76 os << (it==array.begin()?
"" :
",") << *it;
82template<
class Ch,
class Tr,
typename... args>
84 std::list<args...>& list)
87 for(
auto it = list.begin(); it != list.end(); ++it){
88 os << (it==list.begin()?
"" :
",") << *it;
94template<
class Ch,
class Tr,
typename... args>
96 std::set<args...>& set)
99 for(
auto it = set.begin(); it != set.end(); ++it){
100 os << (it==set.begin()?
"" :
",") << *it;
106template<
class Ch,
class Tr,
typename... args>
108 std::unordered_set<args...>& set)
111 for(
auto it = set.begin(); it != set.end(); ++it){
112 os << (it==set.begin()?
"" :
",") << *it;
124 if constexpr (std::is_arithmetic<O>::value) {
132 std::stringstream stream;
134 for(
unsigned iDim=0; iDim<O::d; ++iDim){
135 stream << (iDim==0 ?
"" :
",");
Top level namespace for all of OpenLB.
std::string boolToStr(O input)
Create readable bool string.
void print_index_sequence(std::basic_ostream< Ch, Tr > &os, const std::index_sequence< Is... > is)
Print std::index_sequence.
std::ostream & operator<<(std::ostream &os, const ScalarVector< T, D, IMPL > &o)
Print vector entries to ostream in a human-readable fashion.