| 1039 | class TSrc, |
| 1040 | class TDst> |
| 1041 | static void MakeQuantizedColumn( |
| 1042 | const TSrc& srcFeature, |
| 1043 | const TQuantizedFeaturesInfo& quantizedFeaturesInfo, |
| 1044 | const TIncrementalDenseIndexing& incrementalDenseIndexing, |
| 1045 | ESparseArrayIndexingType sparseArrayIndexingType, |
| 1046 | const TFeaturesArraySubsetIndexing* dstSubsetIndexing, |
| 1047 | NPar::ILocalExecutor* localExecutor, |
| 1048 | |
| 1049 | // pass as parameter to enable type deduction |
| 1050 | THolder<TDst>* dstFeature |
| 1051 | ) { |
| 1052 | TValueQuantizer<TSrc> valueQuantizer(quantizedFeaturesInfo, srcFeature.GetId()); |
| 1053 | |
| 1054 | // dispatch by storedDstValueType |
| 1055 | auto makeQuantizedColumnForStoredDstValue = [&] (auto storedDstValueExample) { |
| 1056 | if (valueQuantizer.GetDefaultBin()) { |
| 1057 | MakeQuantizedColumnWithDefaultBin<decltype(storedDstValueExample)>( |
| 1058 | srcFeature, |
| 1059 | std::move(valueQuantizer), |
| 1060 | sparseArrayIndexingType, |
| 1061 | dstFeature |
| 1062 | ); |
| 1063 | } else { |
| 1064 | MakeQuantizedColumnWithoutDefaultBin<decltype(storedDstValueExample)>( |
| 1065 | srcFeature, |
| 1066 | incrementalDenseIndexing, |
| 1067 | std::move(valueQuantizer), |
| 1068 | dstSubsetIndexing, |
| 1069 | localExecutor, |
| 1070 | dstFeature |
| 1071 | ); |
| 1072 | } |
| 1073 | }; |
| 1074 | |
| 1075 | switch (valueQuantizer.GetDstBitsPerKey()) { |
| 1076 | case 8: |
| 1077 | makeQuantizedColumnForStoredDstValue(ui8()); |
| 1078 | break; |
| 1079 | case 16: |
| 1080 | makeQuantizedColumnForStoredDstValue(ui16()); |
| 1081 | break; |
| 1082 | case 32: |
| 1083 | makeQuantizedColumnForStoredDstValue(ui32()); |
| 1084 | break; |
| 1085 | default: |
| 1086 | CB_ENSURE_INTERNAL(false, "MakeQuantizedColumn: unsupported bits per key"); |
| 1087 | } |
| 1088 | } |
| 1089 | |
| 1090 | TMaybe<ui32> GetDefaultQuantizedValue( |
| 1091 | const TQuantizedFeaturesInfo& quantizedFeaturesInfo, |
no test coverage detected