25 const std::string& type,
26 const std::string& unit,
27 const std::string& desc,
28 std::ios_base::fmtflags flags,
31 description_m(
std::make_tuple(type, unit, desc)),
33 writePrecision_m(prec),
36 std::list<std::ios_base::fmtflags> numericalBase({std::ios_base::dec,
39 std::list<std::ios_base::fmtflags> floatFormat({std::ios_base::fixed,
40 std::ios_base::scientific});
41 std::list<std::ios_base::fmtflags> adjustmentFlags({std::ios_base::internal,
43 std::ios_base::right});
46 for (std::ios_base::fmtflags flag: numericalBase) {
52 for (std::ios_base::fmtflags flag: floatFormat) {
58 for (std::ios_base::fmtflags flag: adjustmentFlags) {
70 const std::string& indent)
const {
72 << indent <<
"name=" <<
name_m <<
",\n"
76 os << indent <<
"units=" << std::get<1>(
description_m) <<
",\n";
78 os << indent <<
"description=\"" << colNr <<
" " << std::get<2>(
description_m) <<
"\"\n"
86 "value for column '" +
name_m +
"' isn't set");
92 std::visit([&os](
auto&&
arg){
93 using T = std::decay_t<
decltype(
arg)>;
94 if constexpr (std::is_arithmetic_v<T>) {
96 os << static_cast<double>(
arg);
101 os << std::setw(10) <<
"\t";
SDDSColumn(const std::string &name, const std::string &type, const std::string &unit, const std::string &desc, std::ios_base::fmtflags flags, unsigned short precision)