1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       crc_macros.h
4 /// \brief      Some endian-dependent macros for CRC32 and CRC64
5 //
6 //  Author:     Lasse Collin
7 //
8 //  This file has been put into the public domain.
9 //  You can do whatever you want with this file.
10 //
11 ///////////////////////////////////////////////////////////////////////////////
12 
13 #ifdef WORDS_BIGENDIAN
14 #	define A(x) ((x) >> 24)
15 #	define B(x) (((x) >> 16) & 0xFF)
16 #	define C(x) (((x) >> 8) & 0xFF)
17 #	define D(x) ((x) & 0xFF)
18 
19 #	define S8(x) ((x) << 8)
20 #	define S32(x) ((x) << 32)
21 
22 #else
23 #	define A(x) ((x) & 0xFF)
24 #	define B(x) (((x) >> 8) & 0xFF)
25 #	define C(x) (((x) >> 16) & 0xFF)
26 #	define D(x) ((x) >> 24)
27 
28 #	define S8(x) ((x) >> 8)
29 #	define S32(x) ((x) >> 32)
30 #endif
31