| 5 | |
| 6 | |
| 7 | TIntrusivePtr<ICtrProvider> MergeCtrProvidersData(const TVector<TIntrusivePtr<ICtrProvider>>& providers, ECtrTableMergePolicy mergePolicy) { |
| 8 | TVector<const TStaticCtrProvider*> nonEmptyStaticProviders; |
| 9 | for (const auto& provider : providers) { |
| 10 | if (provider) { |
| 11 | const TStaticCtrProvider* staticCtr = dynamic_cast<const TStaticCtrProvider*>(provider.Get()); |
| 12 | CB_ENSURE(staticCtr != nullptr, "only static ctr providers merging supported for now"); |
| 13 | nonEmptyStaticProviders.emplace_back(staticCtr); |
| 14 | } |
| 15 | } |
| 16 | if (nonEmptyStaticProviders.empty()) { |
| 17 | return TIntrusivePtr<ICtrProvider>(); |
| 18 | } |
| 19 | if (nonEmptyStaticProviders.size() == 1) { |
| 20 | return nonEmptyStaticProviders.back()->Clone(); |
| 21 | } |
| 22 | return MergeStaticCtrProvidersData(nonEmptyStaticProviders, mergePolicy); |
| 23 | } |
no test coverage detected