GCS  0.2.3
gu_crc.hpp
1 /*
2  * Copyright (C) 2013 Codership Oy <info@codership.com>
3  *
4  * @file header for various CRC stuff
5  *
6  * $Id: gu_crc.hpp 3515 2014-03-26 16:10:56Z yan $
7  */
8 
9 #ifndef GU_CRC_HPP
10 #define GU_CRC_HPP
11 
12 #include "gu_crc32c.h"
13 
14 namespace gu
15 {
16 
17 class CRC32C
18 {
19 public:
20 
21  CRC32C() : state_(GU_CRC32C_INIT) {}
22 
23  void append(const void* const data, size_t const size)
24  {
25  gu_crc32c_append (&state_, data, size);
26  }
27 
28  uint32_t get() const { return gu_crc32c_get(state_); }
29 
30  uint32_t operator() () const { return get(); }
31 
32  static uint32_t digest(const void* const data, size_t const size)
33  {
34  return gu_crc32c(data, size);
35  }
36 
37 private:
38 
39  gu_crc32c_t state_;
40 
41 }; /* class CRC32C */
42 
43 } /* namespace gu */
44 
45 #endif /* GU_CRC_HPP */
Definition: gu_crc.hpp:17