Grail (C++)  1.4.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
Crc16.h
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_CRC16_H
4 #define GRAIL_CRC16_H
5 
6 #include <cstddef>
7 #include <cstdint>
8 #include <string>
9 
10 namespace grail
11 {
12 namespace live
13 {
14  class Crc16
15  {
16  public:
17  Crc16();
18 
19  std::uint16_t ComputeChecksum(const uint8_t* bytes, std::size_t startingIndex, std::size_t length) const;
20  std::uint8_t* ComputeChecksumBytes(const std::string& bytes) const;
21  std::uint8_t* ComputeChecksumBytes(const uint8_t* bytes, std::size_t startingIndex, std::size_t length) const;
22 
23  inline static constexpr std::size_t crcBytes = sizeof(uint16_t);
24 
25  private:
26  constexpr static const std::uint16_t POLYNOMIAL = 0xA001;
27  constexpr static const std::size_t TABLE_SIZE = 256;
28  std::uint16_t table[TABLE_SIZE]{};
29 
30  const char BYTE_SIZE = 8;
31  };
32 }
33 }
34 
35 #endif // GRAIL_CRC16_H
grail::live::Crc16
Definition: Crc16.h:14