#include "processes.hpp" Rabin_fingerprint_process::Rabin_fingerprint_process(uint32_t irr_poly, size_t window_size_in_bits) : window_size_in_bits(window_size_in_bits), phi(irr_poly, window_size_in_bits) {} void Rabin_fingerprint_process::stream_char (char c) { std::bitset<8> b(c); for (char i = 7; i >= 0; i--) { stream_bit((bool)b[i]); } } void Rabin_fingerprint_process::stream_bit (bool b) { if (window.size() == window_size_in_bits) { window.push(b); bool b_out = window.front(); window.pop(); phi.slide_bit(b, b_out); } else { window.push(b); phi.push_bit(b); } } uint32_t Rabin_fingerprint_process::get_fingerprint () { return phi.get_fingerprint(); }