Bachelors_Thesis_Code/Rabin_fingerprint.hpp

31 lines
727 B
C++
Raw Permalink Normal View History

2021-11-14 14:35:05 +01:00
#ifndef RABIN_FINGERPRINT_H
#define RABIN_FINGERPRINT_H
#include <stdint.h>
#include <bitset>
#include <math.h>
#include <stdexcept>
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);
2021-11-14 14:35:05 +01:00
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