| 594 | |
| 595 | template <typename T, bool use_dynamic_cast> |
| 596 | Status ResourceMgr::LookupMany( |
| 597 | absl::Span<std::pair<const string*, const string*> const> |
| 598 | containers_and_names, |
| 599 | std::vector<std::unique_ptr<T, core::RefCountDeleter>>* resources) const { |
| 600 | CheckDeriveFromResourceBase<T>(); |
| 601 | tf_shared_lock l(mu_); |
| 602 | resources->resize(containers_and_names.size()); |
| 603 | for (size_t i = 0; i < containers_and_names.size(); ++i) { |
| 604 | T* resource; |
| 605 | Status s = LookupInternal<T, use_dynamic_cast>( |
| 606 | *containers_and_names[i].first, *containers_and_names[i].second, |
| 607 | &resource); |
| 608 | if (s.ok()) { |
| 609 | (*resources)[i].reset(resource); |
| 610 | } |
| 611 | } |
| 612 | return Status::OK(); |
| 613 | } |
| 614 | |
| 615 | // Simple wrapper to allow conditional dynamic / static casts. |
| 616 | template <typename T, bool use_dynamic_cast> |
no test coverage detected