32 using namespace Euclid::Table;
34 namespace SourceXtractor {
38 for (
auto& prop : enabled_properties) {
39 if (m_output_properties.count(prop) == 0) {
42 auto matching_properties = m_output_properties.equal_range(prop);
43 for (
auto i = matching_properties.first; i != matching_properties.second; ++i) {
44 if (
std::find(out_prop_list.begin(), out_prop_list.end(), i->second) == out_prop_list.end()) {
45 out_prop_list.emplace_back(i->second);
52 for (
const auto& property : out_prop_list) {
53 for (
const auto& name : m_property_to_names_map.at(property)) {
54 auto& col_info = m_name_to_col_info_map.
at(name);
55 info_list.emplace_back(name, m_name_to_converter_map.at(name).first,
56 col_info.unit, col_info.description);
57 cell_values.emplace_back(m_name_to_converter_map.at(name).second(source));
60 if (info_list.empty()) {
63 return Row {
std::move(cell_values), std::make_shared<ColumnInfo>(
move(info_list))};
69 for (
auto& prop : m_output_properties) {
70 if (!properties.
empty() && properties_set.
find(prop.first) == properties_set.end()) {
74 for (
auto& col : m_property_to_names_map.at(prop.second)) {
76 auto& info = m_name_to_col_info_map.at(col);
77 if (info.description !=
"") {
80 if (info.unit !=
"") {