git-svn-id: svn://db.shs.com.ru/pip@844 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2019-08-14 12:00:33 +00:00
parent 6be61e2f39
commit 224a1ed916
5 changed files with 323 additions and 87 deletions

View File

@@ -500,6 +500,22 @@ inline uint piHashData(const uchar * data, uint len, uint seed = 0) {
}
template<typename T> inline uint piHash(const T & v) {
return 0;
}
template<> inline uint piHash(const char & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const uchar & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const short & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const ushort & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const int & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const uint & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const llong & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const ullong & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const float & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const double & v) {return piHashData((const uchar *)&v, sizeof(v));}
template<> inline uint piHash(const ldouble & v) {return piHashData((const uchar *)&v, sizeof(v));}
#define piRoundf piRound<float>
#define piRoundd piRound<double>
#define piFloorf piFloor<float>

View File

@@ -316,14 +316,6 @@ __PIBYTEARRAY_SIMPLE_TYPE__(ldouble)
__PIBYTEARRAY_SIMPLE_TYPE__(PIChar)
template<typename T>
inline uint piHash(const T & v) {
PIByteArray ba;
ba << v;
return ba.hash();
}
template<> inline uint piHash(const PIByteArray & ba) {return ba.hash();}