#ifndef RABIN_FINGERPRINT_H #define RABIN_FINGERPRINT_H #include #include #include #include class Rabin_fingerprint { public: Rabin_fingerprint(uint32_t polynomial, size_t window_size_in_bits); void push_char (char c); void push_bit (bool b); void shift_bit (bool b); void slide_char (char c_in, char c_out); void slide_bit (bool b_in, bool b_out); uint32_t get_fingerprint(); private: void set_modulo_polynomial (uint32_t p); void set_shift_polynomial (size_t window_size_in_bits); uint32_t fingerprint = 0; uint32_t polynomial = 0; uint32_t shift_polynomial = 0; }; #endif