Skip to content

Commit 80deb08

Browse files
committed
update addMissingOutputsToBuilder with ranges
1 parent e97ad87 commit 80deb08

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

Framework/Core/src/AnalysisSupportHelpers.cxx

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -170,24 +170,32 @@ void AnalysisSupportHelpers::addMissingOutputsToBuilder(std::vector<InputSpec> c
170170
std::vector<InputSpec>& requestedDYNs,
171171
DataProcessorSpec& publisher)
172172
{
173-
for (auto& input : requestedSpecials) {
174-
auto concrete = DataSpecUtils::asConcreteDataMatcher(input);
175-
publisher.outputs.emplace_back(concrete.origin, concrete.description, concrete.subSpec);
176-
for (auto& i : input.metadata) {
177-
if ((i.type == VariantType::String) && (i.name.find("input:") != std::string::npos)) {
178-
auto spec = DataSpecUtils::fromMetadataString(i.defaultValue.get<std::string>());
179-
auto j = std::find_if(publisher.inputs.begin(), publisher.inputs.end(), [&](auto x) { return x.binding == spec.binding; });
180-
if (j == publisher.inputs.end()) {
181-
publisher.inputs.push_back(spec);
182-
}
183-
if (DataSpecUtils::partialMatch(spec, AODOrigins)) {
184-
DataSpecUtils::updateInputList(requestedAODs, std::move(spec));
185-
} else if (DataSpecUtils::partialMatch(spec, header::DataOrigin{"DYN"})) {
186-
DataSpecUtils::updateInputList(requestedDYNs, std::move(spec));
187-
}
188-
}
189-
}
173+
requestedSpecials |
174+
std::views::transform([](auto const& req){ // create outputspecs for inputs
175+
return DataSpecUtils::asOutputSpec(req);
176+
}) |
177+
sinks::append_to{publisher.outputs}; // append them to the publisher outputs
178+
179+
std::vector<InputSpec> additionalInputs;
180+
for (auto const& input : requestedSpecials) {
181+
input.metadata |
182+
std::views::filter([](auto const& param){ // filter config params that are strings starting with "input:"
183+
return (param.type == VariantType::String) && (param.name.find("input:") != std::string::npos);
184+
}) |
185+
std::views::transform([](auto const& param){ // parse them into InputSpecs
186+
return DataSpecUtils::fromMetadataString(param.defaultValue.template get<std::string>());
187+
}) |
188+
sinks::update_input_list{additionalInputs}; // store into a temporary
190189
}
190+
191+
additionalInputs | sinks::update_input_list(publisher.inputs); // update publisher inputs
192+
// FIXME: until we have a single list of pairs
193+
additionalInputs |
194+
views::partial_match_filter(AODOrigins) |
195+
sinks::update_input_list{requestedAODs}; // update requestedAODs
196+
additionalInputs |
197+
views::partial_match_filter(header::DataOrigin{"DYN"}) |
198+
sinks::update_input_list{requestedDYNs}; // update requestedDYNs
191199
}
192200

193201
void AnalysisSupportHelpers::addMissingOutputsToAnalysisCCDBFetcher(

0 commit comments

Comments
 (0)