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

This commit is contained in:
2019-08-13 12:12:09 +00:00
parent c6bed4c4f5
commit 6be61e2f39
6 changed files with 111 additions and 219 deletions

View File

@@ -461,7 +461,7 @@ uint letobe_i(uint v) {return (v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF
#endif
/// \brief Generic hash function, impements murmur3/32 algorithm
inline uint piHash(const uchar * data, uint len, uint seed = 0) {
inline uint piHashData(const uchar * data, uint len, uint seed = 0) {
if (!data || len <= 0) return 0u;
uint h = seed;
if (len > 3) {

View File

@@ -278,7 +278,7 @@ uint PIByteArray::checksumPlain32() const {
uint PIByteArray::hash() const {
return piHash(data(), size_s());
return piHashData(data(), size_s());
}

View File

@@ -315,4 +315,16 @@ __PIBYTEARRAY_SIMPLE_TYPE__(double)
__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();}
#endif // PIBYTEARRAY_H

View File

@@ -420,7 +420,7 @@ const char * PIString::dataAscii() const {
uint PIString::hash() const {
buildData();
return piHash(data_.data(), data_.size_s() - 1);
return piHashData(data_.data(), data_.size_s() - 1);
}

View File

@@ -863,4 +863,6 @@ inline PIByteArray & operator >>(PIByteArray & s, PIStringList & v) {int sz; s >
//! \relatesalso PIStringList \relatesalso PICout \brief Output operator to PICout
inline PICout operator <<(PICout s, const PIStringList & v) {s.space(); s.setControl(0, true); s << "{"; for (uint i = 0; i < v.size(); ++i) {s << "\"" << v[i] << "\""; if (i < v.size() - 1) s << ", ";} s << "}"; s.restoreControl(); return s;}
template<> inline uint piHash(const PIString & s) {return s.hash();}
#endif // PISTRING_H