NeoPZ
TPZHash.cpp
Go to the documentation of this file.
1 
2 #include "TPZHash.h"
3 
4 //constexpr bool is_little_endian() {
5 // unsigned short x=0x0001;
6 // auto p = reinterpret_cast<unsigned char*>(&x);
7 // return *p != 0;
8 //}
9 
10 int32_t Hash(std::string str) {
11  std::string::size_type size = str.size();
12  uint8_t *arr = new uint8_t[size];
13  for (unsigned int i = 0; i < size; ++i) {
14  arr[i] = str.at(i);
15  }
16  uint32_t out;
17  MurmurHash3_x86_32(arr, size, 0xB0F57EE3, &out);
18  delete[] arr;
19 
20  return (int32_t)out;
21 }
22 
23 template <>
25  return Hash("TPZFlopCounter");
26 }
27 
28 template <>
30  return Hash("int");
31 }
32 
33 template <>
35  return Hash("long int");
36 }
37 
38 template <>
40  return Hash("long long");
41 }
42 
43 template <>
45  return Hash("unsigned long long");
46 }
47 
48 template <>
50  return Hash("float");
51 }
52 
53 template <>
55  return Hash("double");
56 }
57 
58 template <>
60  return Hash("long double");
61 }
62 
63 template <>
64 int ClassIdOrHash<std::complex<float>>(){
65  return Hash("std::complex<float>");
66 }
67 
68 template <>
69 int ClassIdOrHash<std::complex<double>>(){
70  return Hash("std::complex<double>");
71 }
72 
73 template <>
74 int ClassIdOrHash<std::complex<long double>>(){
75  return Hash("std::complex<long double>");
76 }
int ClassIdOrHash< TPZFlopCounter >()
Definition: TPZHash.cpp:24
int ClassIdOrHash< double >()
Definition: TPZHash.cpp:54
void MurmurHash3_x86_32(const void *key, int len, uint32_t seed, void *out)
Definition: MurmurHash3.cpp:89
int ClassIdOrHash< float >()
Definition: TPZHash.cpp:49
int ClassIdOrHash< long double >()
Definition: TPZHash.cpp:59
int ClassIdOrHash< int >()
Definition: TPZHash.cpp:29
int32_t Hash(std::string str)
Definition: TPZHash.cpp:10
int ClassIdOrHash< long int >()
Definition: TPZHash.cpp:34
int ClassIdOrHash< uint64_t >()
Definition: TPZHash.cpp:44
int ClassIdOrHash< long long >()
Definition: TPZHash.cpp:39