| 558 | } |
| 559 | |
| 560 | void BinMapper::CopyFrom(const char * buffer) { |
| 561 | std::memcpy(&num_bin_, buffer, sizeof(num_bin_)); |
| 562 | buffer += sizeof(num_bin_); |
| 563 | std::memcpy(&missing_type_, buffer, sizeof(missing_type_)); |
| 564 | buffer += sizeof(missing_type_); |
| 565 | std::memcpy(&is_trivial_, buffer, sizeof(is_trivial_)); |
| 566 | buffer += sizeof(is_trivial_); |
| 567 | std::memcpy(&sparse_rate_, buffer, sizeof(sparse_rate_)); |
| 568 | buffer += sizeof(sparse_rate_); |
| 569 | std::memcpy(&bin_type_, buffer, sizeof(bin_type_)); |
| 570 | buffer += sizeof(bin_type_); |
| 571 | std::memcpy(&min_val_, buffer, sizeof(min_val_)); |
| 572 | buffer += sizeof(min_val_); |
| 573 | std::memcpy(&max_val_, buffer, sizeof(max_val_)); |
| 574 | buffer += sizeof(max_val_); |
| 575 | std::memcpy(&default_bin_, buffer, sizeof(default_bin_)); |
| 576 | buffer += sizeof(default_bin_); |
| 577 | if (bin_type_ == BinType::NumericalBin) { |
| 578 | bin_upper_bound_ = std::vector<double>(num_bin_); |
| 579 | std::memcpy(bin_upper_bound_.data(), buffer, num_bin_ * sizeof(double)); |
| 580 | } else { |
| 581 | bin_2_categorical_ = std::vector<int>(num_bin_); |
| 582 | std::memcpy(bin_2_categorical_.data(), buffer, num_bin_ * sizeof(int)); |
| 583 | categorical_2_bin_.clear(); |
| 584 | for (int i = 0; i < num_bin_; ++i) { |
| 585 | categorical_2_bin_[bin_2_categorical_[i]] = static_cast<unsigned int>(i); |
| 586 | } |
| 587 | } |
| 588 | } |
| 589 | |
| 590 | void BinMapper::SaveBinaryToFile(const VirtualFileWriter* writer) const { |
| 591 | writer->Write(&num_bin_, sizeof(num_bin_)); |
no test coverage detected