63 using SegmentMatcherFactory = std::function<std::unique_ptr<SegmentMatcher>()>;
69 static UDQConfig serializationTestObject();
71 const std::string& unit(
const std::string& key)
const;
72 bool has_unit(
const std::string& keyword)
const;
73 bool has_keyword(
const std::string& keyword)
const;
75 void add_record(SegmentMatcherFactory create_segment_matcher,
78 std::size_t report_step);
80 void add_unit(
const std::string& keyword,
81 const std::string& unit);
83 void add_update(
const std::string& keyword,
84 std::size_t report_step,
86 const std::vector<std::string>& data);
88 void add_assign(
const std::string& quantity,
89 SegmentMatcherFactory create_segment_matcher,
90 const std::vector<std::string>& selector,
92 std::size_t report_step);
94 void add_assign(
const std::string& quantity,
95 const std::unordered_set<std::string>& selector,
97 std::size_t report_step);
99 void add_define(
const std::string& quantity,
101 const std::vector<std::string>& expression,
102 std::size_t report_step);
104 bool clear_pending_assignments();
106 void eval_assign(std::size_t report_step,
109 SegmentMatcherFactory create_segment_matcher,
113 void eval(std::size_t report_step,
116 SegmentMatcherFactory create_segment_matcher,
120 const UDQDefine& define(
const std::string& key)
const;
121 const UDQAssign& assign(
const std::string& key)
const;
123 std::vector<UDQDefine> definitions()
const;
124 std::vector<UDQDefine> definitions(UDQVarType var_type)
const;
125 std::vector<UDQInput> input()
const;
130 std::size_t size()
const;
132 UDQInput operator[](
const std::string& keyword)
const;
133 UDQInput operator[](std::size_t insert_index)
const;
135 std::vector<UDQAssign> assignments()
const;
136 std::vector<UDQAssign> assignments(UDQVarType var_type)
const;
140 bool operator==(
const UDQConfig& config)
const;
141 void required_summary(std::unordered_set<std::string>& summary_keys)
const;
143 template<
class Serializer>
146 serializer(udq_params);
147 serializer(m_definitions);
148 serializer(m_assignments);
150 serializer(input_index);
151 serializer(type_count);
152 serializer(pending_assignments_);
172 std::unordered_map<std::string, UDQDefine> m_definitions;
173 std::unordered_map<std::string, UDQAssign> m_assignments;
174 std::unordered_map<std::string, std::string> units;
178 std::map<UDQVarType, std::size_t> type_count;
180 mutable std::vector<std::string> pending_assignments_{};
182 void add_node(
const std::string& quantity, UDQAction action);
183 UDQAction action_type(
const std::string& udq_key)
const;
185 void eval_assign(std::size_t report_step,
189 void eval_define(std::size_t report_step,
193 void add_named_assign(
const std::string& quantity,
194 const std::vector<std::string>& selector,
196 std::size_t report_step);
198 void add_enumerated_assign(
const std::string& quantity,
199 SegmentMatcherFactory create_segment_matcher,
200 const std::vector<std::string>& selector,
202 std::size_t report_step);
Definition UDQContext.hpp:46