From 8551499a5e87e5fff0d7b1a5b0f947624566fa49 Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 7 Aug 2022 22:07:26 +0300 Subject: [PATCH] PICout refactoring, new SHSTKMacros --- cmake/FindPIP.cmake | 7 +---- doc/examples/picout.cpp | 4 +-- libs/console/piscreentiles.cpp | 3 +-- libs/main/code/picodeinfo.h | 8 +++--- libs/main/containers/pideque.h | 4 +-- libs/main/containers/pimap.h | 4 +-- libs/main/containers/pipair.h | 4 +-- libs/main/containers/piset.h | 4 +-- libs/main/containers/pivector.h | 4 +-- libs/main/containers/pivector2d.h | 4 +-- libs/main/core/pibitarray.cpp | 4 +-- libs/main/core/pibytearray.cpp | 4 +-- libs/main/core/pichar.cpp | 4 +-- libs/main/core/picout.cpp | 23 ++++++---------- libs/main/core/picout.h | 42 ++++++++++++++++++----------- libs/main/core/pidatetime.cpp | 12 ++++----- libs/main/core/piobject.cpp | 9 ++++--- libs/main/core/pistringlist.h | 2 +- libs/main/core/pisystemtime.h | 2 +- libs/main/core/pivariant.h | 4 +-- libs/main/core/pivarianttypes.h | 2 +- libs/main/io_devices/pibinarylog.h | 12 ++++----- libs/main/io_devices/piconfig.h | 2 +- libs/main/io_devices/pidir.h | 2 +- libs/main/io_devices/piethernet.h | 2 +- libs/main/io_devices/pifile.h | 4 +-- libs/main/io_utils/pibasetransfer.h | 2 +- libs/main/io_utils/pifiletransfer.h | 4 +-- libs/main/math/piline.h | 4 +-- libs/main/math/pimathcomplex.h | 2 +- libs/main/math/pipoint.h | 4 +-- libs/main/math/pirect.h | 4 +-- libs/main/system/pisysteminfo.h | 4 +-- libs/main/system/pisystemmonitor.h | 4 +-- libs/opencl/piopencl.cpp | 4 +-- libs/usb/piusb.cpp | 4 +-- 36 files changed, 106 insertions(+), 106 deletions(-) diff --git a/cmake/FindPIP.cmake b/cmake/FindPIP.cmake index b3bfdb38..71cd3d9b 100644 --- a/cmake/FindPIP.cmake +++ b/cmake/FindPIP.cmake @@ -20,12 +20,7 @@ main library cmake_policy(SET CMP0011 NEW) # don`t affect includer policies include(SHSTKMacros) -shstk_set_find_dirs(pip) -if(PIP_DIR) - list(APPEND pip_LIBDIR "${PIP_DIR}/lib") - list(APPEND pip_INCDIR "${PIP_DIR}/include/pip") - list(APPEND pip_BINDIR "${PIP_DIR}/bin") -endif() +shstk_set_find_dirs(pip PIP) set(__libs "usb;crypt;console;fftw;compress;io_utils;opencl;cloud;lua") diff --git a/doc/examples/picout.cpp b/doc/examples/picout.cpp index 75ebf19c..f284829e 100644 --- a/doc/examples/picout.cpp +++ b/doc/examples/picout.cpp @@ -4,7 +4,7 @@ inline PICout operator <<(PICout s, const PIByteArray & ba) { s.space(); // insert space after previous output s.quote(); // ONLY if you want to quoted your type - s.setControl(0, true); // clear all features and + s.saveAndSetControls(0); // clear all features and // save them to stack, // now it`s behavior similar to std::cout @@ -12,7 +12,7 @@ inline PICout operator <<(PICout s, const PIByteArray & ba) { for (uint i = 0; i < ba.size(); ++i) s << ba[i]; - s.restoreControl(); // restore features from stack + s.restoreControls(); // restore features from stack s.quote(); // ONLY if you want to quoted your type return s; } diff --git a/libs/console/piscreentiles.cpp b/libs/console/piscreentiles.cpp index de0cfea4..7a340680 100644 --- a/libs/console/piscreentiles.cpp +++ b/libs/console/piscreentiles.cpp @@ -538,12 +538,11 @@ TilePICout::TilePICout(const PIString & n): TileList(n) { max_lines = 1024; selection_mode = TileList::SingleSelection; PICout::setOutputDevices(PICout::Buffer); - PICout::setBufferActive(true); } void TilePICout::drawEvent(PIScreenDrawer * d) { - PIString out = PICout::buffer(true); + PIString out = PICout::getBufferAndClear(); if (!out.isEmpty()) { PIStringList l = out.split("\n"); bool scroll = (cur == content.size_s() - 1) || !has_focus; diff --git a/libs/main/code/picodeinfo.h b/libs/main/code/picodeinfo.h index 584d6973..7153ba04 100644 --- a/libs/main/code/picodeinfo.h +++ b/libs/main/code/picodeinfo.h @@ -218,7 +218,7 @@ inline PICout operator <<(PICout s, const PICodeInfo::TypeInfo & v) { inline PICout operator <<(PICout s, const PICodeInfo::EnumeratorInfo & v) {s << v.name << " = " << v.value << " Meta" << v.meta; return s;} inline PICout operator <<(PICout s, const PICodeInfo::ClassInfo & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "class " << v.name; if (!v.parents.isEmpty()) { s << ": "; @@ -246,12 +246,12 @@ inline PICout operator <<(PICout s, const PICodeInfo::ClassInfo & v) { s << PICoutManipulators::Tab << i << " Meta" << i.meta << ";\n"; } s << "}\n"; - s.restoreControl(); + s.restoreControls(); return s; } inline PICout operator <<(PICout s, const PICodeInfo::EnumInfo & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "enum " << v.name << " Meta" << v.meta << " {\n"; for (const auto & i: v.members) { bool f = true; @@ -260,7 +260,7 @@ inline PICout operator <<(PICout s, const PICodeInfo::EnumInfo & v) { s << PICoutManipulators::Tab << i << "\n"; } s << "}\n"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/pideque.h b/libs/main/containers/pideque.h index 8c5878b9..3dcc51c3 100644 --- a/libs/main/containers/pideque.h +++ b/libs/main/containers/pideque.h @@ -2439,14 +2439,14 @@ inline std::ostream & operator <<(std::ostream & s, const PIDeque & v) { template inline PICout operator <<(PICout s, const PIDeque & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; for (size_t i = 0; i < v.size(); ++i) { s << v[i]; if (i < v.size() - 1) s << ", "; } s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/pimap.h b/libs/main/containers/pimap.h index 6f5e278d..60f5c216 100644 --- a/libs/main/containers/pimap.h +++ b/libs/main/containers/pimap.h @@ -845,7 +845,7 @@ inline std::ostream & operator <<(std::ostream & s, const PIMap & v) template inline PICout operator <<(PICout s, const PIMap & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; bool first = true; for (typename PIMap::const_iterator i = v.begin(); i != v.end(); ++i) { @@ -855,7 +855,7 @@ inline PICout operator <<(PICout s, const PIMap & v) { s << i.key() << ": " << i.value(); } s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/pipair.h b/libs/main/containers/pipair.h index 9de7e2df..5548c1ba 100644 --- a/libs/main/containers/pipair.h +++ b/libs/main/containers/pipair.h @@ -114,9 +114,9 @@ inline std::ostream & operator <<(std::ostream & s, const PIPair & template inline PICout operator <<(PICout s, const PIPair & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "(" << v.first << ", " << v.second << ")"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/piset.h b/libs/main/containers/piset.h index ddf3553e..e0b28e63 100644 --- a/libs/main/containers/piset.h +++ b/libs/main/containers/piset.h @@ -145,7 +145,7 @@ template PISet operator &(const PISet & v0, const PISet & template inline PICout operator <<(PICout s, const PISet & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; bool first = true; for (typename PIMap::const_iterator i = v.begin(); i != v.end(); ++i) { @@ -155,7 +155,7 @@ inline PICout operator <<(PICout s, const PISet & v) { s << i.key(); } s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/pivector.h b/libs/main/containers/pivector.h index 4a01319b..e731f419 100644 --- a/libs/main/containers/pivector.h +++ b/libs/main/containers/pivector.h @@ -2316,7 +2316,7 @@ inline std::ostream & operator <<(std::ostream & s, const PIVector & v) { template inline PICout operator <<(PICout s, const PIVector & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; for (size_t i = 0; i < v.size(); ++i) { s << v[i]; @@ -2325,7 +2325,7 @@ inline PICout operator <<(PICout s, const PIVector & v) { } } s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/containers/pivector2d.h b/libs/main/containers/pivector2d.h index 6a170e0a..f78e2908 100644 --- a/libs/main/containers/pivector2d.h +++ b/libs/main/containers/pivector2d.h @@ -292,7 +292,7 @@ protected: template inline PICout operator <<(PICout s, const PIVector2D & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; for (size_t i = 0; i < v.rows(); ++i) { s << "{ "; @@ -305,7 +305,7 @@ inline PICout operator <<(PICout s, const PIVector2D & v) { } if (v.isEmpty()) s << "{ }"; s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/core/pibitarray.cpp b/libs/main/core/pibitarray.cpp index c941dc52..808cbf27 100644 --- a/libs/main/core/pibitarray.cpp +++ b/libs/main/core/pibitarray.cpp @@ -23,12 +23,12 @@ PICout operator <<(PICout s, const PIBitArray & ba) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); for (uint i = 0; i < ba.bitSize(); ++i) { s << int(ba[i]); if (i % 8 == 7) s << ' '; } - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/core/pibytearray.cpp b/libs/main/core/pibytearray.cpp index e660d56f..de35c75c 100644 --- a/libs/main/core/pibytearray.cpp +++ b/libs/main/core/pibytearray.cpp @@ -406,14 +406,14 @@ PIByteArray PIByteArray::fromHex(PIString str) { PICout operator <<(PICout s, const PIByteArray & ba) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "{"; for (uint i = 0; i < ba.size(); ++i) { s << ba[i]; if (i < ba.size() - 1) s << ", "; } s << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/core/pichar.cpp b/libs/main/core/pichar.cpp index 0d2f1409..d54cb77e 100644 --- a/libs/main/core/pichar.cpp +++ b/libs/main/core/pichar.cpp @@ -359,7 +359,7 @@ PIChar PIChar::toLower() const { PICout operator <<(PICout s, const PIChar & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); if (v.isAscii()) s << char(v.ch); else { #ifdef PIP_ICU @@ -380,6 +380,6 @@ PICout operator <<(PICout s, const PIChar & v) { s << PIString(v); #endif } - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/core/picout.cpp b/libs/main/core/picout.cpp index 999b0315..ecada7b2 100644 --- a/libs/main/core/picout.cpp +++ b/libs/main/core/picout.cpp @@ -267,8 +267,8 @@ PICout PICout::operator <<(const PICoutAction v) { #endif } break; - case PICoutManipulators::SaveContol: saveControl(); break; - case PICoutManipulators::RestoreControl: restoreControl(); break; + case PICoutManipulators::SaveContol: saveControls(); break; + case PICoutManipulators::RestoreControl: restoreControls(); break; default: break; }; return *this; @@ -440,14 +440,14 @@ PICout PICout::operator <<(const PICoutSpecialChar v) { } -PICout & PICout::saveControl() { +PICout & PICout::saveControls() { if (!act_) return *this; PRIVATE->cos_.push(co_); return *this; } -PICout & PICout::restoreControl() { +PICout & PICout::restoreControls() { if (!act_) return *this; if (!PRIVATE->cos_.isEmpty()) { co_ = PRIVATE->cos_.top(); @@ -650,24 +650,17 @@ void PICout::applyFormat(PICoutFormat f) { } -bool PICout::setBufferActive(bool on, bool clear) { +PIString PICout::getBuffer() { PIMutexLocker ml(PICout::__mutex__()); - bool ret = isBufferActive(); - if (clear) PICout::__string__().clear(); - setOutputDevice(Buffer, on); + PIString ret = PICout::__string__(); return ret; } -bool PICout::isBufferActive() { - return isOutputDeviceActive(Buffer); -} - - -PIString PICout::buffer(bool clear) { +PIString PICout::getBufferAndClear() { PIMutexLocker ml(PICout::__mutex__()); PIString ret = PICout::__string__(); - if (clear) PICout::__string__().clear(); + PICout::__string__().clear(); return ret; } diff --git a/libs/main/core/picout.h b/libs/main/core/picout.h index dc466e04..06ed67ab 100644 --- a/libs/main/core/picout.h +++ b/libs/main/core/picout.h @@ -261,19 +261,23 @@ public: //! \~russian Установить флаг "c" в "on" состояние PICout & setControl(PICoutManipulators::PICoutControl c, bool on = true) {co_.setFlag(c, on); return *this;} - //! \~english Set control flags "c" and if "save" exec \a saveControl() - //! \~russian Установить флаг "c" и если "save" то выполнить \a saveControl() - PICout & setControl(PICoutManipulators::PICoutControls c, bool save = false) {if (save) saveControl(); co_ = c; return *this;} + //! \~english Set control flags "c" + //! \~russian Установить флаги "c" + PICout & setControls(PICoutManipulators::PICoutControls c) {co_ = c; return *this;} + + //! \~english Exec \a saveControls() and set control flags to "c" + //! \~russian Иыполнить \a saveControls() и Установить флаги "c" + PICout & saveAndSetControls(PICoutManipulators::PICoutControls c) {saveControls(); co_ = c; return *this;} //! \~english Save control flags to internal stack //! \~russian Сохраняет состояние флагов во внутренний стек //! \~\sa \a restoreControl() - PICout & saveControl(); + PICout & saveControls(); //! \~english Restore control flags from internal stack //! \~russian Восстанавливает состояние флагов из внутреннего стека //! \~\sa \a saveControl() - PICout & restoreControl(); + PICout & restoreControls(); //! \~english Conditional put space character to output //! \~russian Условно добавляет пробел @@ -307,17 +311,13 @@ public: //! \~russian Вывод \a PIString в stdout static void stdoutPIString(const PIString & s); - //! \~english Set output device to \a PICout::Buffer and if "clear" clear it - //! \~russian Устанавливает устройство вывода на \a PICout::Buffer и если "clear" то очищает его - static bool setBufferActive(bool on, bool clear = false); + //! \~english Returns internal PIString buffer + //! \~russian Возвращает внутренний PIString буфер + static PIString getBuffer(); - //! \~english Equivalent to \a isOutputDeviceActive(OutputDevice) - //! \~russian Аналог \a isOutputDeviceActive(OutputDevice) - static bool isBufferActive(); - - //! \~english Returns internal PIString buffer and if "clear" clear it - //! \~russian Возвращает внутренний PIString буфер и если "clear" то очищает его - static PIString buffer(bool clear = false); + //! \~english Returns internal PIString buffer and clear it + //! \~russian Возвращает внутренний PIString буфер и очищает его + static PIString getBufferAndClear(); //! \~english Clear internal PIString buffer //! \~russian Очищает внутренний PIString буфер @@ -328,10 +328,22 @@ public: //! \~russian Устройство вывода "d" устанавливается в "on". Возвращает было ли устройство активно static bool setOutputDevice(OutputDevice d, bool on = true); + //! \~english Turn on output device "d". Returns if it was enabled + //! \~russian Включает устройство вывода "d". Возвращает было ли устройство активно + static bool enableOutputDevice(OutputDevice d) {return setOutputDevice(d, true);} + + //! \~english Turn off output device "d". Returns if it was enabled + //! \~russian Выключает устройство вывода "d". Возвращает было ли устройство активно + static bool disableOutputDevice(OutputDevice d) {return setOutputDevice(d, false);} + //! \~english Set output to devices to "d" //! \~russian Устанавливает устройства вывода "d" static void setOutputDevices(OutputDevices d); + //! \~english Returns current output devices + //! \~russian Возвращает текущие устройства вывода + static OutputDevices currentOutputDevices() {return devs;} + //! \~english Returns if output device "d" is active //! \~russian Возвращает активно ли устройство вывода "d" static bool isOutputDeviceActive(OutputDevice d); diff --git a/libs/main/core/pidatetime.cpp b/libs/main/core/pidatetime.cpp index 70bd6dd8..f8b004aa 100644 --- a/libs/main/core/pidatetime.cpp +++ b/libs/main/core/pidatetime.cpp @@ -312,30 +312,30 @@ PIString datetime2string(const PIDateTime & date, const PIString & format) { PICout operator <<(PICout s, const PITime & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "PITime(" << v.hours << ":"; s << PIString::fromNumber(v.minutes).expandLeftTo(2, '0') << ":"; s << PIString::fromNumber(v.seconds).expandLeftTo(2, '0') << ":"; s << PIString::fromNumber(v.milliseconds).expandLeftTo(3, '0') << ")"; - s.restoreControl(); + s.restoreControls(); return s; } PICout operator <<(PICout s, const PIDate & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "PIDate(" << v.day << "-"; s << PIString::fromNumber(v.month).expandLeftTo(2, '0') << "-"; s << v.year << ")"; - s.restoreControl(); + s.restoreControls(); return s; } PICout operator <<(PICout s, const PIDateTime & v) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "PIDateTime("; s << v.day << "-"; s << PIString::fromNumber(v.month).expandLeftTo(2, '0') << "-"; @@ -344,7 +344,7 @@ PICout operator <<(PICout s, const PIDateTime & v) { s << PIString::fromNumber(v.minutes).expandLeftTo(2, '0') << ":"; s << PIString::fromNumber(v.seconds).expandLeftTo(2, '0') << ":"; s << PIString::fromNumber(v.milliseconds).expandLeftTo(3, '0') << ")"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/core/piobject.cpp b/libs/main/core/piobject.cpp index f857dbf3..f5594669 100644 --- a/libs/main/core/piobject.cpp +++ b/libs/main/core/piobject.cpp @@ -751,13 +751,14 @@ bool dumpApplicationToFile(const PIString & path, bool with_objects) { f.setName("__S__DumpFile"); f.clear(); if (!f.open(PIIODevice::WriteOnly)) return false; - bool ba = PICout::isBufferActive(); - PICout::setBufferActive(true, true); + auto out_devs = PICout::currentOutputDevices(); + PICout::setOutputDevices(PICout::Buffer); + PICout::clearBuffer(); dumpApplication(with_objects); PIIOTextStream ts(&f); - ts << PICout::buffer(); + ts << PICout::getBuffer(); f.close(); - PICout::setBufferActive(ba, true); + PICout::setOutputDevices(out_devs); PIFile::rename(path + "_tmp", path); return true; } diff --git a/libs/main/core/pistringlist.h b/libs/main/core/pistringlist.h index 61c65fb8..dc8abc32 100644 --- a/libs/main/core/pistringlist.h +++ b/libs/main/core/pistringlist.h @@ -146,6 +146,6 @@ BINARY_STREAM_READ(PIStringList) { //! \relatesalso PICout //! \~english Output operator to \a PICout //! \~russian Оператор вывода в \a 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;} +inline PICout operator <<(PICout s, const PIStringList & v) {s.space(); s.saveAndSetControls(0); s << "{"; for (uint i = 0; i < v.size(); ++i) {s << "\"" << v[i] << "\""; if (i < v.size() - 1) s << ", ";} s << "}"; s.restoreControls(); return s;} #endif // PISTRINGLIST_H diff --git a/libs/main/core/pisystemtime.h b/libs/main/core/pisystemtime.h index 5dd025b5..e3653db5 100644 --- a/libs/main/core/pisystemtime.h +++ b/libs/main/core/pisystemtime.h @@ -186,7 +186,7 @@ private: //! \relatesalso PICout //! \~english \brief Output operator to PICout //! \~russian \brief Оператор вывода в PICout -inline PICout operator <<(PICout s, const PISystemTime & v) {s.space(); s.setControl(0, true); s << "(" << v.seconds << " s, " << v.nanoseconds << " ns)"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PISystemTime & v) {s.space(); s.saveAndSetControls(0); s << "(" << v.seconds << " s, " << v.nanoseconds << " ns)"; s.restoreControls(); return s;} diff --git a/libs/main/core/pivariant.h b/libs/main/core/pivariant.h index f9e5c68c..b0baad33 100644 --- a/libs/main/core/pivariant.h +++ b/libs/main/core/pivariant.h @@ -809,12 +809,12 @@ BINARY_STREAM_READ(PIVariant) { } inline PICout operator <<(PICout s, const PIVariant & v) { - s.space(); s.setControl(0, true); + s.space(); s.saveAndSetControls(0); s << "PIVariant(" << v.typeName(); if (v.isValid()) s << ", " << v.toString(); s << ")"; - s.restoreControl(); return s; + s.restoreControls(); return s; } diff --git a/libs/main/core/pivarianttypes.h b/libs/main/core/pivarianttypes.h index dc23bf8a..21986830 100644 --- a/libs/main/core/pivarianttypes.h +++ b/libs/main/core/pivarianttypes.h @@ -172,7 +172,7 @@ inline PICout operator <<(PICout s, const PIVariantTypes::File & v) {s << "File( inline PICout operator <<(PICout s, const PIVariantTypes::Dir & v) {s << "Dir(\"" << v.dir << "\")"; return s;} -inline PICout operator <<(PICout s, const PIVariantTypes::Color & v) {s.saveControl(); s << PICoutManipulators::Hex << "Color(#" << v.rgba << ")"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIVariantTypes::Color & v) {s.saveControls(); s << PICoutManipulators::Hex << "Color(#" << v.rgba << ")"; s.restoreControls(); return s;} inline PICout operator <<(PICout s, const PIVariantTypes::IODevice & v) {s << v.toPICout(); return s;} diff --git a/libs/main/io_devices/pibinarylog.h b/libs/main/io_devices/pibinarylog.h index 2862dabc..c7f4a956 100644 --- a/libs/main/io_devices/pibinarylog.h +++ b/libs/main/io_devices/pibinarylog.h @@ -350,25 +350,25 @@ private: //! \relatesalso PICout \brief Output operator PIBinaryLog::BinLogInfo to PICout inline PICout operator <<(PICout s, const PIBinaryLog::BinLogInfo & bi) { s.space(); - s.setControl(0, true); + s.saveAndSetControls(0); s << "[PIBinaryLog] " << bi.path << "\n"; if (bi.log_size < 0) { s << "invalid file path"; - s.restoreControl(); + s.restoreControls(); return s; } if (bi.log_size == 0) { s << "Invalid empty file"; - s.restoreControl(); + s.restoreControls(); return s; } if (bi.records_count < 0 && bi.records_count > -4) { s << "Invalid file or corrupted signature"; - s.restoreControl(); + s.restoreControls(); return s; } if (bi.records_count < -3) { s << "Invalid binlog version"; - s.restoreControl(); + s.restoreControls(); return s; } s << "read records " << bi.records_count << " in " << bi.records.size() << " types, log size " << bi.log_size; @@ -380,7 +380,7 @@ inline PICout operator <<(PICout s, const PIBinaryLog::BinLogInfo & bi) { s << "\n record start " << bri.start_time << " , end " << bri.end_time; s << "\n record size " << bri.minimum_size << " - " << bri.maximum_size; } - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/io_devices/piconfig.h b/libs/main/io_devices/piconfig.h index dc7dafde..915c7b91 100644 --- a/libs/main/io_devices/piconfig.h +++ b/libs/main/io_devices/piconfig.h @@ -518,7 +518,7 @@ PIP_EXPORT std::ostream & operator <<(std::ostream & s, const PIConfig::Branch & PIP_EXPORT std::ostream & operator <<(std::ostream & s, const PIConfig::Entry & v); #endif -inline PICout operator <<(PICout s, const PIConfig::Branch & v) {s.setControl(0, true); v.piCoutt(s, ""); s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIConfig::Branch & v) {s.saveAndSetControls(0); v.piCoutt(s, ""); s.restoreControls(); return s;} inline PICout operator <<(PICout s, const PIConfig::Entry & v) { s << v.value() << "(" << v.type() << v.comment() << ")"; return s; diff --git a/libs/main/io_devices/pidir.h b/libs/main/io_devices/pidir.h index eece7e21..f3444748 100644 --- a/libs/main/io_devices/pidir.h +++ b/libs/main/io_devices/pidir.h @@ -189,7 +189,7 @@ inline bool operator !=(const PIFile::FileInfo & v0, const PIFile::FileInfo & v1 //! \relatesalso PICout //! \~english Output operator to \a PICout //! \~russian Оператор вывода в \a PICout -inline PICout operator <<(PICout s, const PIDir & v) {s.setControl(0, true); s << "PIDir(\"" << v.path() << "\")"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIDir & v) {s.saveAndSetControls(0); s << "PIDir(\"" << v.path() << "\")"; s.restoreControls(); return s;} #endif // PIDIR_H diff --git a/libs/main/io_devices/piethernet.h b/libs/main/io_devices/piethernet.h index 2da65d29..1977b120 100644 --- a/libs/main/io_devices/piethernet.h +++ b/libs/main/io_devices/piethernet.h @@ -515,7 +515,7 @@ private: inline bool operator <(const PIEthernet::Interface & v0, const PIEthernet::Interface & v1) {return (v0.name < v1.name);} inline bool operator ==(const PIEthernet::Interface & v0, const PIEthernet::Interface & v1) {return (v0.name == v1.name && v0.address == v1.address && v0.netmask == v1.netmask);} inline bool operator !=(const PIEthernet::Interface & v0, const PIEthernet::Interface & v1) {return (v0.name != v1.name || v0.address != v1.address || v0.netmask != v1.netmask);} -inline PICout operator <<(PICout s, const PIEthernet::Address & v) {s.space(); s.setControl(0, true); s << "Address(" << v.toString() << ")"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIEthernet::Address & v) {s.space(); s.saveAndSetControls(0); s << "Address(" << v.toString() << ")"; s.restoreControls(); return s;} inline bool operator ==(const PIEthernet::Address & v0, const PIEthernet::Address & v1) {return (v0.ip() == v1.ip() && v0.port() == v1.port());} inline bool operator !=(const PIEthernet::Address & v0, const PIEthernet::Address & v1) {return (v0.ip() != v1.ip() || v0.port() != v1.port());} diff --git a/libs/main/io_devices/pifile.h b/libs/main/io_devices/pifile.h index f0c3c05d..f8648607 100644 --- a/libs/main/io_devices/pifile.h +++ b/libs/main/io_devices/pifile.h @@ -334,12 +334,12 @@ private: //! \~english Output operator to \a PICout //! \~russian Оператор вывода в \a PICout inline PICout operator <<(PICout s, const PIFile::FileInfo & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "FileInfo(\"" << v.path << "\", " << PIString::readableSize(v.size) << ", " << v.perm_user.toString() << " " << v.perm_group.toString() << " " << v.perm_other.toString() << ", " << v.time_access.toString() << ", " << v.time_modification.toString() << ", 0x" << PICoutManipulators::Hex << v.flags << ")"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/io_utils/pibasetransfer.h b/libs/main/io_utils/pibasetransfer.h index 8c632ba2..99e2f5d2 100644 --- a/libs/main/io_utils/pibasetransfer.h +++ b/libs/main/io_utils/pibasetransfer.h @@ -154,7 +154,7 @@ BINARY_STREAM_READ (PIBaseTransfer::Part) {s >> v.id >> v.size >> v.start; retur BINARY_STREAM_WRITE(PIBaseTransfer::StartRequest) {s << v.packets << v.size; return s;} BINARY_STREAM_READ (PIBaseTransfer::StartRequest) {s >> v.packets >> v.size; return s;} -inline PICout operator <<(PICout s, const PIBaseTransfer::Part & v) {s.setControl(0, true); s << "Part(\"" << v.id << "\", " << PIString::readableSize(v.start) << " b | " << PIString::readableSize(v.size) << " b)"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIBaseTransfer::Part & v) {s.saveAndSetControls(0); s << "Part(\"" << v.id << "\", " << PIString::readableSize(v.start) << " b | " << PIString::readableSize(v.size) << " b)"; s.restoreControls(); return s;} #endif // PIBASETRANSFER_H diff --git a/libs/main/io_utils/pifiletransfer.h b/libs/main/io_utils/pifiletransfer.h index 659e933b..a73ba54a 100644 --- a/libs/main/io_utils/pifiletransfer.h +++ b/libs/main/io_utils/pifiletransfer.h @@ -126,12 +126,12 @@ BINARY_STREAM_READ (PIFileTransfer::PFTFileInfo) { } inline PICout operator <<(PICout s, const PIFileTransfer::PFTFileInfo & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "FileInfo(\"" << v.dest_path << "\", " << PIString::readableSize(v.size) << ", " << v.perm_user.toString() << " " << v.perm_group.toString() << " " << v.perm_other.toString() << ", " << v.time_access.toString() << ", " << v.time_modification.toString() << ", 0x" << PICoutManipulators::Hex << v.flags << ")"; - s.restoreControl(); + s.restoreControls(); return s; } #endif // PIFILETRANSFER_H diff --git a/libs/main/math/piline.h b/libs/main/math/piline.h index b26e9f42..d3775299 100644 --- a/libs/main/math/piline.h +++ b/libs/main/math/piline.h @@ -180,9 +180,9 @@ public: //! \~russian Перегруженный оператор для вывода координат в \a PICout. template PICout operator <<(PICout & s, const PILine & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "Line{" << v.p0 << ", " << v.p1 << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/math/pimathcomplex.h b/libs/main/math/pimathcomplex.h index d6e6885f..6616488c 100644 --- a/libs/main/math/pimathcomplex.h +++ b/libs/main/math/pimathcomplex.h @@ -70,7 +70,7 @@ inline complexd log10(const complexd & c) {return log(c) / M_LN10;} #endif template -inline PICout operator <<(PICout s, const complex & v) {s.space(); s.setControl(0, true); s << "(" << v.real() << "; " << v.imag() << ")"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const complex & v) {s.space(); s.saveAndSetControls(0); s << "(" << v.real() << "; " << v.imag() << ")"; s.restoreControls(); return s;} inline PIVector abs(const PIVector & v) { diff --git a/libs/main/math/pipoint.h b/libs/main/math/pipoint.h index b9090050..bda5cb36 100644 --- a/libs/main/math/pipoint.h +++ b/libs/main/math/pipoint.h @@ -153,9 +153,9 @@ public: //! \~russian Перегруженный оператор для вывода координат в \a PICout. template PICout operator <<(PICout & s, const PIPoint & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "Point{" << v.x << ", " << v.y << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/math/pirect.h b/libs/main/math/pirect.h index 1cbdde4d..b587b37c 100644 --- a/libs/main/math/pirect.h +++ b/libs/main/math/pirect.h @@ -341,9 +341,9 @@ private: template PICout operator <<(PICout & s, const PIRect & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "Rect{" << v.bottomLeft() << ":" << v.width() << "x" << v.height() << "}"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/system/pisysteminfo.h b/libs/main/system/pisysteminfo.h index 12d6205a..81cedc7f 100644 --- a/libs/main/system/pisysteminfo.h +++ b/libs/main/system/pisysteminfo.h @@ -144,12 +144,12 @@ private: //! \~english Output operator to \a PICout //! \~russian Оператор вывода в \a PICout inline PICout operator <<(PICout s, const PISystemInfo::MountInfo & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "MountInfo(" << v.device << " mounted on \"" << v.mount_point << "\", type " << v.filesystem << ", label \"" << v.label << "\", all " << PIString::readableSize(v.space_all) << ", used " << PIString::readableSize(v.space_used) << ", free " << PIString::readableSize(v.space_free) << ")"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/main/system/pisystemmonitor.h b/libs/main/system/pisystemmonitor.h index 3d1f3630..63fb3f35 100644 --- a/libs/main/system/pisystemmonitor.h +++ b/libs/main/system/pisystemmonitor.h @@ -280,13 +280,13 @@ private: //! \~english Output operator to \a PICout //! \~russian Оператор вывода в \a PICout inline PICout operator <<(PICout s, const PISystemMonitor::ThreadStats & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << "ThreadInfo(\"" << v.name << "\", created " << v.created << ", work " << v.work_time.toMilliseconds() << " ms" << ", kernel " << v.kernel_time.toMilliseconds() << " ms" << ", user " << v.user_time.toMilliseconds() << " ms" << ")\n"; - s.restoreControl(); + s.restoreControls(); return s; } diff --git a/libs/opencl/piopencl.cpp b/libs/opencl/piopencl.cpp index 66584ce0..1f5b3efd 100644 --- a/libs/opencl/piopencl.cpp +++ b/libs/opencl/piopencl.cpp @@ -701,6 +701,6 @@ void PIOpenCL::KernelArg::init(void * _k, uint index) { PICout operator <<(PICout s, const PIOpenCL::KernelArg & v) { - s.setControl(0); s << "Arg(" << v.base_type_name << " " << v.arg_name << " (addr=" << v.address_qualifier << ",acc=" << v.access_qualifier << ",typ=" << v.type_qualifier << ",dims=" << v.dims << "))"; - s.restoreControl(); return s; + s.setControls(0); s << "Arg(" << v.base_type_name << " " << v.arg_name << " (addr=" << v.address_qualifier << ",acc=" << v.access_qualifier << ",typ=" << v.type_qualifier << ",dims=" << v.dims << "))"; + s.restoreControls(); return s; } diff --git a/libs/usb/piusb.cpp b/libs/usb/piusb.cpp index 85cfe01f..9aa911ff 100644 --- a/libs/usb/piusb.cpp +++ b/libs/usb/piusb.cpp @@ -375,7 +375,7 @@ void PIUSB::flush() { PICout operator<<(PICout s, const PIUSB::Endpoint & v) { - s.setControl(0, true); + s.saveAndSetControls(0); s << PICoutManipulators::NewLine << "{" << PICoutManipulators::NewLine; if (v.isNull()) s << " " << "Null Endpoint"; @@ -411,7 +411,7 @@ PICout operator<<(PICout s, const PIUSB::Endpoint & v) { s << " " << "Max Packet Size: " << v.max_packet_size << PICoutManipulators::NewLine; } s << "}" << PICoutManipulators::NewLine; - s.restoreControl(); + s.restoreControls(); return s; }