PIByteArray operators & | ^
PIDigest add BLAKE2 algorithms and HMAC
This commit is contained in:
@@ -1238,6 +1238,39 @@ inline bool operator!=(const PIByteArray & v0, const PIByteArray & v1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
//! \relatesalso PIByteArray
|
||||
//! \~english Returns bit-wise "and". If non-equal size, then returns empty %PIByteArray.
|
||||
//! \~russian Возвращает по-битовое "и" Если размеры не совпадают, возвращает пустой %PIByteArray.
|
||||
inline PIByteArray operator&(const PIByteArray & v0, const PIByteArray & v1) {
|
||||
if (v0.size() != v1.size()) return {};
|
||||
PIByteArray ret(v0.size(), 0);
|
||||
for (uint i = 0; i < v0.size(); ++i)
|
||||
ret[i] = v0[i] & v1[i];
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \relatesalso PIByteArray
|
||||
//! \~english Returns bit-wise "or". If non-equal size, then returns empty %PIByteArray.
|
||||
//! \~russian Возвращает по-битовое "или" Если размеры не совпадают, возвращает пустой %PIByteArray.
|
||||
inline PIByteArray operator|(const PIByteArray & v0, const PIByteArray & v1) {
|
||||
if (v0.size() != v1.size()) return {};
|
||||
PIByteArray ret(v0.size(), 0);
|
||||
for (uint i = 0; i < v0.size(); ++i)
|
||||
ret[i] = v0[i] | v1[i];
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \relatesalso PIByteArray
|
||||
//! \~english Returns bit-wise "xor". If non-equal size, then returns empty %PIByteArray.
|
||||
//! \~russian Возвращает по-битовое "исключающее или" Если размеры не совпадают, возвращает пустой %PIByteArray.
|
||||
inline PIByteArray operator^(const PIByteArray & v0, const PIByteArray & v1) {
|
||||
if (v0.size() != v1.size()) return {};
|
||||
PIByteArray ret(v0.size(), 0);
|
||||
for (uint i = 0; i < v0.size(); ++i)
|
||||
ret[i] = v0[i] ^ v1[i];
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef PIP_STD_IOSTREAM
|
||||
//! \relatesalso PIByteArray \brief Output to std::ostream operator
|
||||
inline std::ostream & operator<<(std::ostream & s, const PIByteArray & ba);
|
||||
|
||||
Reference in New Issue
Block a user