Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 int end = s.length();
40 for (int 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
const z_crc_t FAR crc_table[]
Definition: crc32.h:5
Definition: DoubConv.h:17
unsigned long crc32ul(const std::string &s)