version 4.2.0
move toStdFunction() to pibase.h refactor PIParseHelper, now it much more abstract and useful fix PIIODevice::createFromFullPath() when whitespaces at start or end are presence PIStreamPacker add events for start and end packet receive PIClientServer::ClientBase add virtual methods for start and end packet receive. also one can enable diagnostics with enableDiagnostics() method PICout now call flush() on each end of output add PIString::entries(const PIString & str)
This commit is contained in:
@@ -720,4 +720,20 @@ struct PIP_EXPORT PINonTriviallyCopyable {
|
||||
inline PINonTriviallyCopyable::PINonTriviallyCopyable(PINonTriviallyCopyable &&) noexcept = default;
|
||||
|
||||
|
||||
template<typename T>
|
||||
struct FunctionType {
|
||||
using Type = void;
|
||||
};
|
||||
|
||||
template<typename Ret, typename Class, typename... Args>
|
||||
struct FunctionType<Ret (Class::*)(Args...) const> {
|
||||
using Type = std::function<Ret(Args...)>;
|
||||
};
|
||||
|
||||
template<typename L>
|
||||
typename FunctionType<decltype(&L::operator())>::Type toStdFunction(L const & func) {
|
||||
return func;
|
||||
}
|
||||
|
||||
|
||||
#endif // PIBASE_H
|
||||
|
||||
@@ -159,19 +159,19 @@ DWORD PICout::__Private__::smode = 0;
|
||||
#endif
|
||||
|
||||
|
||||
std::ostream & getStdStream(PICoutManipulators::PICoutStdStream s) {
|
||||
std::ostream & getStdStream(PICoutStdStream s) {
|
||||
switch (s) {
|
||||
case PICoutManipulators::StdOut: return std::cout;
|
||||
case PICoutManipulators::StdErr: return std::cerr;
|
||||
case PICoutStdStream::StdOut: return std::cout;
|
||||
case PICoutStdStream::StdErr: return std::cerr;
|
||||
default: break;
|
||||
}
|
||||
return std::cout;
|
||||
}
|
||||
|
||||
std::wostream & getStdWStream(PICoutManipulators::PICoutStdStream s) {
|
||||
std::wostream & getStdWStream(PICoutStdStream s) {
|
||||
switch (s) {
|
||||
case PICoutManipulators::StdOut: return std::wcout;
|
||||
case PICoutManipulators::StdErr: return std::wcerr;
|
||||
case PICoutStdStream::StdOut: return std::wcout;
|
||||
case PICoutStdStream::StdErr: return std::wcerr;
|
||||
default: break;
|
||||
}
|
||||
return std::wcout;
|
||||
@@ -209,6 +209,8 @@ PICout::~PICout() {
|
||||
}
|
||||
if (buffer_) {
|
||||
((NotifierObject *)Notifier::object())->finished(id_, buffer_);
|
||||
} else {
|
||||
getStdStream(stream_).flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,13 +40,13 @@
|
||||
# define piCoutObj
|
||||
|
||||
#else
|
||||
# define piCout PICout(piDebug, PICoutManipulators::StdOut)
|
||||
# define piCoutObj \
|
||||
PICout(piDebug && debug(), PICoutManipulators::StdOut) \
|
||||
# define piCout PICout(piDebug, PICoutStdStream::StdOut)
|
||||
# define piCoutObj \
|
||||
PICout(piDebug && debug(), PICoutStdStream::StdOut) \
|
||||
<< (PIStringAscii("[") + className() + (name().isEmpty() ? "]" : PIStringAscii(" \"") + name() + PIStringAscii("\"]")))
|
||||
# define piCerr PICout(piDebug, PICoutManipulators::StdErr)
|
||||
# define piCerrObj \
|
||||
PICout(piDebug && debug(), PICoutManipulators::StdErr) \
|
||||
# define piCerr PICout(piDebug, PICoutStdStream::StdErr)
|
||||
# define piCerrObj \
|
||||
PICout(piDebug && debug(), PICoutStdStream::StdErr) \
|
||||
<< (PIStringAscii("[") + className() + (name().isEmpty() ? "]" : PIStringAscii(" \"") + name() + PIStringAscii("\"]")))
|
||||
#endif
|
||||
|
||||
@@ -131,19 +131,19 @@ enum PICoutFormat {
|
||||
};
|
||||
|
||||
|
||||
//! \~english Enum contains console streams
|
||||
//! \~russian Перечисление с потоками консоли
|
||||
enum PICoutStdStream {
|
||||
StdOut /*! \~english Standard output stream \~russian Стандартный поток вывода */ = 0,
|
||||
StdErr /*! \~english Standard error stream \~russian Стандартный поток ошибок */ = 1,
|
||||
};
|
||||
|
||||
|
||||
typedef PIFlags<PICoutControl> PICoutControls;
|
||||
|
||||
} // namespace PICoutManipulators
|
||||
|
||||
|
||||
//! \~english Enum contains console streams
|
||||
//! \~russian Перечисление с потоками консоли
|
||||
enum class PICoutStdStream {
|
||||
StdOut /*! \~english Standard output stream \~russian Стандартный поток вывода */ = 0,
|
||||
StdErr /*! \~english Standard error stream \~russian Стандартный поток ошибок */ = 1,
|
||||
};
|
||||
|
||||
|
||||
//! \ingroup Core
|
||||
//! \~\brief
|
||||
//! \~english Universal output to console class.
|
||||
@@ -152,11 +152,11 @@ class PIP_EXPORT PICout {
|
||||
public:
|
||||
//! \~english Default constructor with default features (AddSpaces and AddNewLine)
|
||||
//! \~russian Конструктор по умолчанию (AddSpaces и AddNewLine)
|
||||
PICout(int controls = PICoutManipulators::DefaultControls, PICoutManipulators::PICoutStdStream stream = PICoutManipulators::StdOut);
|
||||
PICout(int controls = PICoutManipulators::DefaultControls, PICoutStdStream stream = PICoutStdStream::StdOut);
|
||||
|
||||
//! \~english Construct with default features (AddSpaces and AddNewLine), but if \"active\" is false does nothing
|
||||
//! \~russian Конструктор по умолчанию (AddSpaces и AddNewLine), но если не \"active\" то будет неактивным
|
||||
PICout(bool active, PICoutManipulators::PICoutStdStream stream = PICoutManipulators::StdOut);
|
||||
PICout(bool active, PICoutStdStream stream = PICoutStdStream::StdOut);
|
||||
|
||||
PICout(const PICout & other);
|
||||
|
||||
@@ -333,7 +333,7 @@ public:
|
||||
|
||||
//! \~english Output \a PIString to stdout
|
||||
//! \~russian Вывод \a PIString в stdout
|
||||
static void stdoutPIString(const PIString & str, PICoutManipulators::PICoutStdStream s = PICoutManipulators::StdOut);
|
||||
static void stdoutPIString(const PIString & str, PICoutStdStream s = PICoutStdStream::StdOut);
|
||||
|
||||
//! \~english Returns internal PIString buffer
|
||||
//! \~russian Возвращает внутренний PIString буфер
|
||||
@@ -396,9 +396,9 @@ private:
|
||||
PRIVATE_DECLARATION(PIP_EXPORT)
|
||||
bool first_out_ = true, is_copy_ = false, format_changed_ = false, actve_ = true;
|
||||
int int_base_ = 10, win_attr_ = 0, id_ = 0;
|
||||
PIString * buffer_ = nullptr;
|
||||
PICoutManipulators::PICoutControls ctrl_ = PICoutManipulators::DefaultControls;
|
||||
PICoutManipulators::PICoutStdStream stream_ = PICoutManipulators::StdOut;
|
||||
PIString * buffer_ = nullptr;
|
||||
PICoutManipulators::PICoutControls ctrl_ = PICoutManipulators::DefaultControls;
|
||||
PICoutStdStream stream_ = PICoutStdStream::StdOut;
|
||||
};
|
||||
|
||||
#endif // PICOUT_H
|
||||
|
||||
Reference in New Issue
Block a user