From ed3d4c4217682c91a347c415ec0f20946e30c3c0 Mon Sep 17 00:00:00 2001 From: peri4 Date: Wed, 9 Jul 2025 12:41:23 +0300 Subject: [PATCH] PIJSON::new* now accept optional initial fields --- lang/pip_ru.btf | Bin 8049 -> 7845 bytes lang/pip_ru.ts | 90 ++++++++++++++--------------- libs/main/io_devices/piethernet.h | 7 ++- libs/main/serialization/pijson.cpp | 18 +++++- libs/main/serialization/pijson.h | 8 ++- 5 files changed, 72 insertions(+), 51 deletions(-) diff --git a/lang/pip_ru.btf b/lang/pip_ru.btf index 230085c6f9a857790ed1ebefd1c2fec73505b209..8f09a06b1420a015c7db94b360f0db694d1cefee 100644 GIT binary patch delta 19 acmexpx72n+oh*|Y^W+9u`OV8^*%$#z%LY{d delta 63 zcmV-F0KosHJ@G!UejNhx1e1Ur9|dy~TJQw3oE-@P0brBh1tXJw5(Woy0C@m#0Cba) V5@8E-0B- PIFile - + Downsize is not supported yet :-( Уменьшение размера не поддерживается @@ -46,50 +46,50 @@ PICrypt - + internal error: bad hash size внутренняя ошибка: плохой размер хэша - + Error while initialize sodium! Ошибка инициализации sodium! - + invalid key size %1, should be %2, filled with zeros неверный размер ключа %1, должен быть %2, заполненный нулями Warning: PICrypt is disabled, to enable install sodium library and rebuild pip - Предупреждение: PICrypt неактивен, для активации установите библиотеку sodium и пересоберите PIP + Предупреждение: PICrypt неактивен, для активации установите библиотеку sodium и пересоберите PIP PIBinLog - + Read record error Ошибка чтения записи - + End of BinLog file Конец BinLog файла - + Error, can't open "%1" Ошибка, невозможно открыть "%1" - + Creating directory "%1" Создание директории "%1" - + Error, can't create "%1" Ошибка, невозможно создать "%1" @@ -99,32 +99,32 @@ Ошибка, Файл пуст "%1" - + Start join binlogs to "%1" Начало слияния логов в "%1" - + BinLogFile has too old verion BinLogFile очень старой версии - + BinLogFile has invalid version BinLogFile неверной версии - + BinLogFile has too new version BinLogFile очень новой версии - + Can't find record with id = %1 Невозможно найти запись с ID = %1 - + Error, can't write to file "%1" Ошибка, невозможно записать в "%1" @@ -139,12 +139,12 @@ Предупреждение: Пустой BinLog файл "%1" - + Finish join binlogs, total time %1 Завершение слияния логов, общее время %1 - + too small read buffer: %1, data size: %2 слишком маленький буфер: %1, размер данных: %2 @@ -154,22 +154,22 @@ Ошибка: Невозможно записать заголовок в "%1" - + Error: can`t write with id = 0! ID must be > 0 Ошибка: Невозможно записать с ID = 0! ID должен быть > 0 - + BinLogFile signature is corrupted or invalid file Неверный заголовок BinLogFile, либо файл поврежден - + Can't create new file, maybe path "%1" is invalid Невозможно создать новый файл, возможно путь "%1" неверен - + Can't create new file, maybe LogDir "%1" is invalid Невозможно создать новый файл, возможно LogDir "%1" неверен @@ -182,22 +182,22 @@ PIOpenCL - + Error: empty range Ошибка: пустой диапазон - + setArgValue invalid index %1 setArgValue неверный индекс %1 - + bindArgValue invalid index %1 bindArgValue неверный индекс %1 - + setArgValue set scalar to "%1 %2" setArgValue устанавливается скаляр в "%1 %2" @@ -207,7 +207,7 @@ Ошибка: Платформы OpenCL не найдены! - + bindArgValue set buffer to "%1 %2" bindArgValue устанавливается буфер в "%1 %2" @@ -253,47 +253,47 @@ PIString - + B Б - + EiB ЭиБ - + GiB ГиБ - + KiB КиБ - + MiB МиБ - + PiB ПиБ - + TiB ТиБ - + YiB ЙиБ - + ZiB ЗиБ @@ -301,17 +301,17 @@ PIThread - + Warning, terminate! Предупреждение, прекращение потока! - + Error: Can`t start new thread: %1 Ошибка: Невозможно начать новый поток: %1 - + [PIThread "%1"] Warning, terminate on destructor! [PIThread "%1"] Предупреждение, прекращение в деструкторе! @@ -358,17 +358,17 @@ PIEthernet - + Can`t get interfaces: %1 Невозможно получить интерфейсы: %1 - + Can`t accept new connection, %1 Невозможно принять новое соединение, %1 - + Error allocating memory needed to call GetAdaptersInfo Ошибка выделения памяти для вызова GetAdaptersInfo @@ -445,12 +445,12 @@ PISystemTime - + fromSystemTime() Warning: null frequency fromSystemTime() Предупреждение: нулевая частота - + toSystemTime() Warning: invalid hertz: %1 toSystemTime() Предупреждение: неверная частота: %1 @@ -510,7 +510,7 @@ PIStreamPacker - + Warning! Not recommended to use with non-reliable device Предупреждение! Не рекомендуется использовать с ненадежными устройствами diff --git a/libs/main/io_devices/piethernet.h b/libs/main/io_devices/piethernet.h index 97f8ca3b..465aa325 100644 --- a/libs/main/io_devices/piethernet.h +++ b/libs/main/io_devices/piethernet.h @@ -325,10 +325,10 @@ public: //! Network interface descriptor struct PIP_EXPORT Interface { //! System index - int index; + int index = -1; //! MTU - int mtu; + int mtu = 0; //! System name PIString name; @@ -351,6 +351,9 @@ public: //! Flags of interface InterfaceFlags flags; + //! Returns if interface is active + bool isValid() const { return name.isNotEmpty(); } + //! Returns if interface is active bool isActive() const { return flags[PIEthernet::ifActive]; } diff --git a/libs/main/serialization/pijson.cpp b/libs/main/serialization/pijson.cpp index 5479ec00..a917f97c 100644 --- a/libs/main/serialization/pijson.cpp +++ b/libs/main/serialization/pijson.cpp @@ -204,16 +204,21 @@ //! -PIJSON PIJSON::newObject() { +PIJSON PIJSON::newObject(const PIVariantMap & fields) { PIJSON ret; ret.c_type = Object; + auto it = fields.makeIterator(); + while (it.next()) + ret[it.key()] = it.value(); return ret; } -PIJSON PIJSON::newArray() { +PIJSON PIJSON::newArray(const PIVariantVector & fields) { PIJSON ret; ret.c_type = Array; + for (const auto & i: fields) + ret << i; return ret; } @@ -325,6 +330,15 @@ PIJSON & PIJSON::operator<<(const PIJSON & element) { } +PIJSON & PIJSON::operator<<(const PIVariant & element) { + c_type = Array; + PIJSON e; + e = element; + c_array << e; + return *this; +} + + PIJSON & PIJSON::operator=(const PIJSON & v) { c_type = v.c_type; c_value = v.c_value; diff --git a/libs/main/serialization/pijson.h b/libs/main/serialization/pijson.h index 76126b7c..046ff0be 100644 --- a/libs/main/serialization/pijson.h +++ b/libs/main/serialization/pijson.h @@ -160,6 +160,10 @@ public: //! \~russian Устанавливает тип элемента в \a PIJSON::Array и добавляет элемент в массив. PIJSON & operator<<(const PIJSON & element); + //! \~english Set element type to \a PIJSON::Array and add element to the end of array. + //! \~russian Устанавливает тип элемента в \a PIJSON::Array и добавляет элемент в массив. + PIJSON & operator<<(const PIVariant & value); + //! \~english Returns element from map with key "key" if type is \a PIJSON::Object, otherwise returns invalid %PIJSON. //! \~russian Возвращает элемент из словаря по ключу "key" если тип \a PIJSON::Object, иначе возвращает недействительный %PIJSON. @@ -183,8 +187,8 @@ public: //! \~russian Разбирает текстовое представление JSON "str" и возвращает его корневой элемент. static PIJSON fromJSON(PIString str); - static PIJSON newObject(); - static PIJSON newArray(); + static PIJSON newObject(const PIVariantMap & fields = {}); + static PIJSON newArray(const PIVariantVector & fields = {}); static PIJSON newString(const PIString & v = PIString()); private: