orange / source / include / crc.h

#ifndef __CRC_H
#define __CRC_H

extern unsigned int crc_table[256];

#define INIT_CRC(x) (x) = 0xffffffff
#define FINISH_CRC(x) (x) = (x) ^ 0xffffffff

#define ADD_CRC \
  for(unsigned char const *b = (unsigned char const *)(&data), *e = b + sizeof(data); \
      b != e; \
      crc = (crc >> 8) ^ crc_table[(crc & 0xFF) ^ *(b++)]); \

inline void add_CRC(const int data, unsigned int &crc)
{ ADD_CRC }

inline void add_CRC(const unsigned long data, unsigned int &crc)
{ ADD_CRC }

inline void add_CRC(const float data, unsigned int &crc)
{ ADD_CRC }

inline void add_CRC(const unsigned char c, unsigned int &crc)
{ crc = (crc >> 8) ^ crc_table[(crc & 0xFF) ^ c]; }

inline void add_CRC(const char *c, unsigned int &crc)
{
  for(; *c; add_CRC((unsigned char)*c++, crc));
  add_CRC((unsigned char)0, crc);
}

#endif
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.