Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/src/engineIDulong.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 16 namespace CLHEP {
 17 
 18 static 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 
 36 unsigned 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 
 49