inline int binary_compare(const T &a, const T &b){ std::vector<uint8_t> a_bytes(binary_length(a)); std::vector<uint8_t> b_bytes(binary_length(b)); write_binary(a_bytes.data(), a); write_binary(b_bytes.data(), b); if(a_bytes == b_bytes){ return 0; } return (a_bytes < b_bytes) ? -1 : 1; }
void Tile::to_binary(std::string &dest) const { dest.resize(binary_length()); BinaryWriter writer((unsigned char*)&dest[0], (unsigned char*)&dest[dest.length()]); writer.write(header); writer.write(double_samples); writer.write(string_samples); writer.write(ranges); }
inline uint64_t compute_hash(const T &x, m3bp::size_type modulo){ const auto len = binary_length(x); std::vector<uint8_t> buf(len); write_binary(buf.data(), x); return m3bp::hash_byte_sequence(buf.data(), len, modulo); }