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();}

View File

@@ -44,7 +44,6 @@ PIIntrospectionContainers::_Type::_Type() {
PIIntrospectionContainers::PIIntrospectionContainers() {
//printf("PIIntrospectionContainers %p\n", this);
crc = standardCRC_32();
}
@@ -106,7 +105,7 @@ uint PIIntrospectionContainers::typeID(const char * tn) {
if (!tn) return 0u;
size_t l = strlen(tn);
if (l == 0) return 0u;
return crc.calculate(tn, int(l));
return piHashData((const uchar*)tn, int(l));
}

View File

@@ -61,7 +61,6 @@ public:
std::map<uint, _Type> data;
std::map<uint, std::string> typenames;
mutable PIMutex mutex;
CRC_32 crc;
};
PIByteArray & operator <<(PIByteArray & s, const PIIntrospectionContainers::TypeInfo & v);