std::vector<AbstractData *> AbstractOutputCapability::findOutputs(const std::string & name) const { return collection::select(allOutputs(), [&name](AbstractData * data) { return data->matchesName(name); }); }
gloperate::Data<T> * AbstractOutputCapability::getOutput() const { return dynamic_cast<Data<T>*>(collection::detect(allOutputs(), [](AbstractData * data) { return dynamic_cast<Data<T>*>(data) != nullptr; }, nullptr)); }
std::vector<AbstractData *> AbstractPipeline::findOutputs(const std::string & name) const { return select(allOutputs(), [&name](AbstractData * data) { return data->matchesName(name); }); }