void StringModel::WriteModel(ByteWriter* byte_writer, size_t block_index) const { for (int i = 0; i < 255; ++i ) { int code = CastInt(char_prob_[i], 16); byte_writer->Write16Bit(code, block_index); } for (int i = 0; i < 63; ++i ) { int code = CastInt(length_prob_[i], 8); byte_writer->WriteByte(code, block_index); } }
void TableCategorical::WriteModel(ByteWriter* byte_writer, size_t block_index) const { // Write Model Description Prefix byte_writer->WriteByte(predictor_list_.size(), block_index); byte_writer->WriteByte(cell_size_, block_index); for (size_t i = 0; i < predictor_list_.size(); ++i ) byte_writer->Write16Bit(predictor_list_[i], block_index); byte_writer->Write16Bit(target_range_, block_index); // Write Model Parameters size_t table_size = dynamic_list_.size(); for (size_t i = 0; i < table_size; ++i ) { std::vector<Prob> prob_segs = dynamic_list_[i].prob; for (size_t j = 0; j < prob_segs.size(); ++j ) { int code = CastInt(prob_segs[j], cell_size_); if (cell_size_ == 16) { byte_writer->Write16Bit(code, block_index); } else { byte_writer->WriteByte(code, block_index); } } } }
void ColorModel::WriteModel(db_compress::ByteWriter* byte_writer, size_t block_index) const { numeric_model_->WriteModel(byte_writer, block_index); byte_writer->Write16Bit(CastInt(zero_prob_, 16), block_index); }