Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
engineIDulong.cc
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// -----------------------------------------------------------------------
4// HEP Random
5// --- engineIDulong ---
6// function implementation file
7// -----------------------------------------------------------------------
8//
9// =======================================================================
10// Mark Fischler - Created: Mar. 8, 2005
11// =======================================================================
12
13#include <string>
14#include <vector>
15
16namespace CLHEP {
17
18static std::vector<unsigned long> gen_crc_table() {
19 /* generate the table of CRC remainders for all possible bytes */
20 static const unsigned long POLYNOMIAL = 0x04c11db7UL;
21 std::vector<unsigned long> crc_table;
22 for ( unsigned long i = 0; i < 256; ++i ) {
23 unsigned long crc = i << 24;
24 for ( int j = 0; j < 8; j++ ) {
25 if ( crc & 0x80000000UL ) {
26 crc = ( ( crc << 1 ) ^ POLYNOMIAL ) & 0xffffffffUL;
27 } else {
28 crc = ( crc << 1 ) & 0xffffffffUL;
29 }
30 }
31 crc_table.push_back(crc);
32 }
33 return crc_table;
34}
35
36unsigned long crc32ul(const std::string & s) {
37 static const std::vector<unsigned long> crc_table = gen_crc_table();
38 unsigned long crc = 0;
39 unsigned long end = s.length();
40 for (unsigned long j = 0; j != end; ++j) {
41 int i = ( (int) ( crc >> 24) ^ s[j] ) & 0xff;
42 crc = ( ( crc << 8 ) ^ crc_table[i] ) & 0xffffffffUL;
43 }
44 return crc;
45}
46
47} // namespace CLHEP
48
local const z_crc_t FAR crc_table[]
Definition crc32.h:5
unsigned long crc32ul(const std::string &s)