| 1209 | |
| 1210 | template <class TColumn> |
| 1211 | static void SaveColumnData( |
| 1212 | const TColumn& column, |
| 1213 | NPar::ILocalExecutor* localExecutor, |
| 1214 | IBinSaver* binSaver |
| 1215 | ) { |
| 1216 | if (auto* packedBinaryValues |
| 1217 | = dynamic_cast<const TPackedBinaryValuesHolderImpl<TColumn>*>(&column)) |
| 1218 | { |
| 1219 | SaveMulti(binSaver, ESavedColumnType::PackedBinary, packedBinaryValues->GetBitIdx()); |
| 1220 | } else if (auto* bundlePartValues |
| 1221 | = dynamic_cast<const TBundlePartValuesHolderImpl<TColumn>*>(&column)) |
| 1222 | { |
| 1223 | SaveMulti(binSaver, ESavedColumnType::BundlePart, bundlePartValues->GetBoundsInBundle()); |
| 1224 | } else if ( |
| 1225 | auto* sparseValues |
| 1226 | = dynamic_cast<const TSparseCompressedValuesHolderImpl<TColumn>*>(&column)) |
| 1227 | { |
| 1228 | SaveMulti(binSaver, ESavedColumnType::Sparse, sparseValues->GetData()); |
| 1229 | } else { |
| 1230 | /* TODO(akhropov): specialize for TCompressedValuesHolderImpl |
| 1231 | * useful if in fact bitsPerKey < sizeof(T) * CHAR_BIT |
| 1232 | */ |
| 1233 | SaveMulti(binSaver, ESavedColumnType::Dense); |
| 1234 | SaveAsCompressedArray<typename TColumn::TValueType>(column.template ExtractValues<typename TColumn::TValueType>(localExecutor), binSaver); |
| 1235 | } |
| 1236 | } |
| 1237 | |
| 1238 | |
| 1239 | template <EFeatureType FeatureType, class TColumn> |
no test coverage detected