| 224 | } |
| 225 | |
| 226 | std::vector<ModelObject> Loop_Impl::demandComponents(const HVACComponent& inletComp, const HVACComponent& outletComp, |
| 227 | openstudio::IddObjectType type) const { |
| 228 | std::vector<HVACComponent> visited; |
| 229 | visited.push_back(inletComp); |
| 230 | std::vector<HVACComponent> allPaths; |
| 231 | |
| 232 | if (inletComp == outletComp) { |
| 233 | allPaths.push_back(inletComp); |
| 234 | } else { |
| 235 | findModelObjects(outletComp, visited, allPaths, true); |
| 236 | } |
| 237 | std::vector<ModelObject> modelObjects = std::vector<ModelObject>(allPaths.begin(), allPaths.end()); |
| 238 | |
| 239 | // Filter modelObjects for type |
| 240 | if (type != IddObjectType::Catchall) { |
| 241 | modelObjects.erase( |
| 242 | std::remove_if(modelObjects.begin(), modelObjects.end(), [&](const auto& mo) -> bool { return mo.iddObjectType() != type; }), |
| 243 | modelObjects.end()); |
| 244 | } |
| 245 | return modelObjects; |
| 246 | } |
| 247 | |
| 248 | template <typename T> |
| 249 | struct Duplicate |