| 1027 | |
| 1028 | |
| 1029 | TTargetDataProvider::TTargetDataProvider( |
| 1030 | TObjectsGroupingPtr objectsGrouping, |
| 1031 | TProcessedTargetData&& processedTargetData, |
| 1032 | bool skipCheck |
| 1033 | ) { |
| 1034 | if (!skipCheck) { |
| 1035 | processedTargetData.Check(*objectsGrouping); |
| 1036 | } |
| 1037 | ObjectsGrouping = std::move(objectsGrouping); |
| 1038 | Data = std::move(processedTargetData); |
| 1039 | |
| 1040 | for (const auto& [name, baselineData] : Data.Baselines) { |
| 1041 | TVector<TConstArrayRef<float>> baselineView(baselineData.size()); |
| 1042 | for (auto i : xrange(baselineData.size())) { |
| 1043 | baselineView[i] = *(baselineData[i]); |
| 1044 | } |
| 1045 | BaselineViews.emplace(name, std::move(baselineView)); |
| 1046 | } |
| 1047 | |
| 1048 | for (const auto& [name, targetData] : Data.Targets) { |
| 1049 | TVector<TConstArrayRef<float>> targetView(targetData.size()); |
| 1050 | for (auto i : xrange(targetData.size())) { |
| 1051 | targetView[i] = *(targetData[i]); |
| 1052 | } |
| 1053 | TargetViews.emplace(name, std::move(targetView)); |
| 1054 | } |
| 1055 | } |
| 1056 | |
| 1057 | bool TTargetDataProvider::operator==(const TTargetDataProvider& rhs) const { |
| 1058 | return (*ObjectsGrouping == *rhs.ObjectsGrouping) && (Data == rhs.Data); |