Bachelors_Thesis_Code/Rabin_fingerprint.hpp
Knyffen c6b6329134 Abstrack simple string matching to a process
The process contains the fingerprinting function along with a queue
representing the sliding window. This means that the user no longer
needs to remember the outgoing character when streaming the text.
2021-11-14 16:19:11 +01:00

31 lines
727 B
C++

#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);
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