in cpp/src/hnswalg.h [696:723]
void saveIndex(std::shared_ptr<OutputStream> output) {
writeBinaryPOD(output, offsetLevel0_);
writeBinaryPOD(output, max_elements_);
writeBinaryPOD(output, cur_element_count);
writeBinaryPOD(output, size_data_per_element_);
writeBinaryPOD(output, label_offset_);
writeBinaryPOD(output, offsetData_);
writeBinaryPOD(output, maxlevel_);
writeBinaryPOD(output, enterpoint_node_);
writeBinaryPOD(output, maxM_);
writeBinaryPOD(output, maxM0_);
writeBinaryPOD(output, M_);
writeBinaryPOD(output, mult_);
writeBinaryPOD(output, ef_construction_);
output->write(data_level0_memory_,
cur_element_count * size_data_per_element_);
for (size_t i = 0; i < cur_element_count; i++) {
unsigned int linkListSize =
element_levels_[i] > 0 ? size_links_per_element_ * element_levels_[i]
: 0;
writeBinaryPOD(output, linkListSize);
if (linkListSize)
output->write(linkLists_[i], linkListSize);
}
}