MCPcopy Create free account
hub / github.com/catboost/catboost / FBDeserializeNonOwning

Method FBDeserializeNonOwning

catboost/libs/model/model.cpp:798–836  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

796}
797
798void 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
838TConstArrayRef<int> TSolidModelTree::GetTreeSplits() const {
839 return TreeSplits;

Callers 1

InitNonOwningMethod · 0.80

Calls 4

CastToOpaqueTreeFunction · 0.85
TArrayRefClass · 0.50
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected