Merge branch 'master' into pico_sdk

This commit is contained in:
2026-08-11 18:21:50 +03:00
29 changed files with 243 additions and 139 deletions
+5 -2
View File
@@ -5,7 +5,7 @@
//! \~russian Упакованный массив битов
/*
PIP - Platform Independent Primitives
Packed bit array
Packed bit array
Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
@@ -173,7 +173,10 @@ public:
//! \~english Remove one bit from the end of array.
//! \~russian Удаляет один бит с конца массива.
PIBitArray & pop_back() { return resize(size_ - 1); }
PIBitArray & pop_back() {
if (size_ == 0) return *this;
return resize(size_ - 1);
}
//! \~english Remove one bit from the beginning of array.
//! \~russian Удаляет один бит с начала массива.
+3 -2
View File
@@ -198,10 +198,11 @@ PIByteArray PIByteArray::fromBase64(const PIByteArray & base64) {
base64HelpStruct hs;
PIByteArray ret;
const int sz = base64.size_s();
int ind = -1;
if (sz < 4) return PIByteArray();
int ind = -1;
uchar t[4];
ret.resize(sz / 4 * 3);
for (int i = 0; i < sz; i += 4) {
for (int i = 0; i < sz / 4 * 4; i += 4) {
hs.setAscii(base64.data(i));
hs.getBytes(t);
ret[++ind] = (t[0]);
+4 -4
View File
@@ -133,15 +133,15 @@ void PIVariant::setValueFromString(const PIString & v) {
case PIVariant::pivComplexf: {
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
setValue(complexf(sl.size() > 0 ? sl[0].toFloat() : 0.f, sl.size() > 1 ? sl[1].toFloat() : 0.f));
}
} break;
case PIVariant::pivComplexd: {
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
setValue(complexd(sl.size() > 0 ? sl[0].toDouble() : 0., sl.size() > 1 ? sl[1].toDouble() : 0.));
}
} break;
case PIVariant::pivComplexld: {
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
setValue(complexld(sl.size() > 0 ? sl[0].toLDouble() : 0.L, sl.size() > 1 ? sl[1].toLDouble() : 0.L));
}
} break;
case PIVariant::pivTime: {
setValue(PITime::fromString(v));
} break;
@@ -243,7 +243,7 @@ PIVariant::Type PIVariant::typeFromName(const PIString & tname) {
if (s == "int" || s == "signed" || s == "signedint" || s == "int32_t") return PIVariant::pivInt;
if (s == "long" || s == "longint" || s == "signedlong" || s == "signedlongint" || s == "sdword") return PIVariant::pivInt;
if (s == "llong" || s == "longlong" || s == "longlongint" || s == "signedlonglong" || s == "signedlonglongint" || s == "sqword" ||
s == "int64_t")
s == "int64_t")
return PIVariant::pivLLong;
if (s == "uchar" || s == "byte" || s == "uint8_t") return PIVariant::pivUChar;
if (s == "ushort" || s == "unsignedshort" || s == "unsignedshortint" || s == "word" || s == "uint16_t") return PIVariant::pivUShort;