| 796 | } |
| 797 | |
| 798 | void TModelTrees::FBDeserializeNonOwning(const NCatBoostFbs::TModelTrees* fbObj) { |
| 799 | ModelTreeData = MakeHolder<TOpaqueModelTree>(); |
| 800 | |
| 801 | ApproxDimension = fbObj->ApproxDimension(); |
| 802 | SetScaleAndBias(fbObj); |
| 803 | DeserializeFeatures(fbObj); |
| 804 | |
| 805 | auto& data = *CastToOpaqueTree(*this); |
| 806 | |
| 807 | if (fbObj->TreeSplits()) { |
| 808 | data.TreeSplits = TConstArrayRef<int>(fbObj->TreeSplits()->data(), fbObj->TreeSplits()->size()); |
| 809 | } |
| 810 | if (fbObj->TreeSizes()) { |
| 811 | data.TreeSizes = TConstArrayRef<int>(fbObj->TreeSizes()->data(), fbObj->TreeSizes()->size()); |
| 812 | } |
| 813 | if (fbObj->TreeStartOffsets()) { |
| 814 | data.TreeStartOffsets = TConstArrayRef<int>(fbObj->TreeStartOffsets()->data(), fbObj->TreeStartOffsets()->size()); |
| 815 | } |
| 816 | |
| 817 | if (fbObj->LeafValues()) { |
| 818 | data.LeafValues = TConstArrayRef<double>(fbObj->LeafValues()->data(), fbObj->LeafValues()->size()); |
| 819 | } |
| 820 | if (fbObj->NonSymmetricStepNodes()) { |
| 821 | static_assert(sizeof(TNonSymmetricTreeStepNode) == sizeof(NCatBoostFbs::TNonSymmetricTreeStepNode)); |
| 822 | auto ptr = reinterpret_cast<const TNonSymmetricTreeStepNode*>(fbObj->NonSymmetricStepNodes()->data()); |
| 823 | data.NonSymmetricStepNodes = TConstArrayRef<TNonSymmetricTreeStepNode>(ptr, fbObj->NonSymmetricStepNodes()->size()); |
| 824 | } |
| 825 | if (fbObj->NonSymmetricNodeIdToLeafId()) { |
| 826 | data.NonSymmetricNodeIdToLeafId = TConstArrayRef<ui32>(fbObj->NonSymmetricNodeIdToLeafId()->data(), fbObj->NonSymmetricNodeIdToLeafId()->size()); |
| 827 | } |
| 828 | if (fbObj->LeafWeights() && fbObj->LeafWeights()->size() > 0) { |
| 829 | data.LeafWeights = TConstArrayRef<double>(fbObj->LeafWeights()->data(), fbObj->LeafWeights()->size()); |
| 830 | } |
| 831 | |
| 832 | if (fbObj->RepackedBins()) { |
| 833 | auto ptr = reinterpret_cast<const TRepackedBin*>(fbObj->RepackedBins()->data()); |
| 834 | RepackedBins = NCB::TMaybeOwningConstArrayHolder<TRepackedBin>::CreateNonOwning(TArrayRef(ptr, fbObj->RepackedBins()->size())); |
| 835 | } |
| 836 | } |
| 837 | |
| 838 | TConstArrayRef<int> TSolidModelTree::GetTreeSplits() const { |
| 839 | return TreeSplits; |
no test coverage detected