65 using RegionSetMatcherFactory = std::function<std::unique_ptr<RegionSetMatcher>()>;
66 using SegmentMatcherFactory = std::function<std::unique_ptr<SegmentMatcher>()>;
72 static UDQConfig serializationTestObject();
74 const std::string& unit(
const std::string& key)
const;
75 bool has_unit(
const std::string& keyword)
const;
76 bool has_keyword(
const std::string& keyword)
const;
78 void add_record(SegmentMatcherFactory create_segment_matcher,
81 std::size_t report_step);
83 void add_unit(
const std::string& keyword,
84 const std::string& unit);
86 void add_update(
const std::string& keyword,
87 std::size_t report_step,
89 const std::vector<std::string>& data);
91 void add_assign(
const std::string& quantity,
92 SegmentMatcherFactory create_segment_matcher,
93 const std::vector<std::string>& selector,
95 std::size_t report_step);
97 void add_assign(
const std::string& quantity,
98 const std::unordered_set<std::string>& selector,
100 std::size_t report_step);
102 void add_define(
const std::string& quantity,
104 const std::vector<std::string>& expression,
105 std::size_t report_step);
107 void add_table(
const std::string& name,
UDT udt);
109 bool clear_pending_assignments();
111 void eval_assign(std::size_t report_step,
114 SegmentMatcherFactory create_segment_matcher,
118 void eval(std::size_t report_step,
121 SegmentMatcherFactory create_segment_matcher,
122 RegionSetMatcherFactory create_region_matcher,
126 const UDQDefine& define(
const std::string& key)
const;
127 const UDQAssign& assign(
const std::string& key)
const;
129 std::vector<UDQDefine> definitions()
const;
130 std::vector<UDQDefine> definitions(UDQVarType var_type)
const;
131 std::vector<UDQInput> input()
const;
136 std::size_t size()
const;
138 UDQInput operator[](
const std::string& keyword)
const;
139 UDQInput operator[](std::size_t insert_index)
const;
141 std::vector<UDQAssign> assignments()
const;
142 std::vector<UDQAssign> assignments(UDQVarType var_type)
const;
145 const std::unordered_map<std::string, UDT>& tables()
const;
147 bool operator==(
const UDQConfig& config)
const;
148 void required_summary(std::unordered_set<std::string>& summary_keys)
const;
150 template<
class Serializer>
153 serializer(udq_params);
154 serializer(m_definitions);
155 serializer(m_assignments);
156 serializer(m_tables);
158 serializer(input_index);
159 serializer(type_count);
160 serializer(pending_assignments_);
180 std::unordered_map<std::string, UDQDefine> m_definitions;
181 std::unordered_map<std::string, UDQAssign> m_assignments;
182 std::unordered_map<std::string, UDT> m_tables;
183 std::unordered_map<std::string, std::string> units;
187 std::map<UDQVarType, std::size_t> type_count;
189 mutable std::vector<std::string> pending_assignments_{};
191 void add_node(
const std::string& quantity, UDQAction action);
192 UDQAction action_type(
const std::string& udq_key)
const;
194 void eval_assign(std::size_t report_step,
198 void eval_define(std::size_t report_step,
202 void add_named_assign(
const std::string& quantity,
203 const std::vector<std::string>& selector,
205 std::size_t report_step);
207 void add_enumerated_assign(
const std::string& quantity,
208 SegmentMatcherFactory create_segment_matcher,
209 const std::vector<std::string>& selector,
211 std::size_t report_step);
Definition UDQContext.hpp:49