picout and clean
This commit is contained in:
@@ -39,11 +39,11 @@ extern PIP_EXPORT char * __utf8name__;
|
||||
class PIP_EXPORT PIChar
|
||||
{
|
||||
friend class PIString;
|
||||
friend PICout PIP_EXPORT operator <<(PICout s, const PIChar & v);
|
||||
friend PICout operator <<(PICout s, const PIChar & v);
|
||||
public:
|
||||
//! \~english Contructs Ascii symbol
|
||||
//! \~russian Создает символ Ascii
|
||||
PIChar(char c) {ch = c; ch &= 0xFF;}
|
||||
PIChar(char c) {ch = c;}
|
||||
|
||||
//! \~english Contructs ascii symbol
|
||||
//! \~russian Создает символ Ascii
|
||||
@@ -183,7 +183,7 @@ private:
|
||||
//! \relatesalso PIChar
|
||||
//! \~english Output operator to \a PICout
|
||||
//! \~russian Оператор вывода в \a PICout
|
||||
PICout PIP_EXPORT operator <<(PICout s, const PIChar & v);
|
||||
PIP_EXPORT PICout operator <<(PICout s, const PIChar & v);
|
||||
|
||||
//! \relatesalso PIChar
|
||||
//! \~english Compare operator
|
||||
|
||||
@@ -154,21 +154,13 @@ DWORD PICout::__Private__::smode = 0;
|
||||
#endif
|
||||
|
||||
PICout::PICout(int controls): fo_(true), cc_(false), fc_(false), act_(true), cnb_(10), co_(controls) {
|
||||
buffer_ = nullptr;
|
||||
init();
|
||||
}
|
||||
|
||||
PICout::PICout(bool active): fo_(true), cc_(false), fc_(false), act_(active), cnb_(10), co_(PICoutManipulators::DefaultControls) {
|
||||
buffer_ = nullptr;
|
||||
if (act_)
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
PICout::PICout(PIString * buffer, int id, PIFlags<PICoutManipulators::PICoutControl> controls): fo_(true), cc_(false),
|
||||
fc_(false), act_(true), cnb_(10), co_(controls) {
|
||||
init();
|
||||
buffer_ = buffer;
|
||||
id_ = id;
|
||||
if (act_) init();
|
||||
}
|
||||
|
||||
|
||||
@@ -182,14 +174,16 @@ PICout::~PICout() {
|
||||
if (fc_) applyFormat(PICoutManipulators::Default);
|
||||
if (cc_) return;
|
||||
newLine();
|
||||
if ((co_ & NoLock) != NoLock)
|
||||
if ((co_ & NoLock) != NoLock) {
|
||||
PICout::__mutex__().unlock();
|
||||
if (buffer_)
|
||||
}
|
||||
if (buffer_) {
|
||||
((NotifierObject*)Notifier::object())->finished(id_, buffer_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PICout PICout::operator <<(const PICoutAction v) {
|
||||
PICout & PICout::operator <<(PICoutAction v) {
|
||||
if (!act_) return *this;
|
||||
#ifdef WINDOWS
|
||||
CONSOLE_SCREEN_BUFFER_INFO sbi;
|
||||
@@ -198,8 +192,9 @@ PICout PICout::operator <<(const PICoutAction v) {
|
||||
#endif
|
||||
switch (v) {
|
||||
case PICoutManipulators::Flush:
|
||||
if (!buffer_ && isOutputDeviceActive(StdOut))
|
||||
if (!buffer_ && isOutputDeviceActive(StdOut)) {
|
||||
std::cout << std::flush;
|
||||
}
|
||||
break;
|
||||
case PICoutManipulators::Backspace:
|
||||
if (isOutputDeviceActive(StdOut)) {
|
||||
@@ -275,7 +270,7 @@ PICout PICout::operator <<(const PICoutAction v) {
|
||||
}
|
||||
|
||||
|
||||
PICout PICout::operator <<(const PICoutManipulators::PICoutFormat v) {
|
||||
PICout & PICout::operator <<(PICoutManipulators::PICoutFormat v) {
|
||||
switch (v) {
|
||||
case PICoutManipulators::Bin: cnb_ = 2; break;
|
||||
case PICoutManipulators::Oct: cnb_ = 8; break;
|
||||
@@ -287,7 +282,7 @@ PICout PICout::operator <<(const PICoutManipulators::PICoutFormat v) {
|
||||
}
|
||||
|
||||
|
||||
PICout PICout::operator <<(const PIFlags<PICoutManipulators::PICoutFormat> & v) {
|
||||
PICout & PICout::operator <<(PIFlags<PICoutManipulators::PICoutFormat> v) {
|
||||
if (v[PICoutManipulators::Bin]) cnb_ = 2;
|
||||
if (v[PICoutManipulators::Oct]) cnb_ = 8;
|
||||
if (v[PICoutManipulators::Dec]) cnb_ = 10;
|
||||
@@ -338,40 +333,73 @@ PICout PICout::operator <<(const PIFlags<PICoutManipulators::PICoutFormat> & v)
|
||||
if (PICout::isOutputDeviceActive(PICout::StdOut)) std::cout << (v);\
|
||||
if (PICout::isOutputDeviceActive(PICout::Buffer)) PICout::__string__() += PIString::fromNumber(v, 'g');\
|
||||
}\
|
||||
}
|
||||
}\
|
||||
return *this;
|
||||
|
||||
|
||||
PICout PICout::operator <<(const char * v) {if (!act_ || !v) return *this; if (v[0] == '\0') return *this; space(); quote(); write(v); quote(); return *this;}
|
||||
PICout & PICout::operator <<(const PIString & v) {
|
||||
space();
|
||||
quote();
|
||||
write(v);
|
||||
quote();
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout PICout::operator <<(const bool v) {if (!act_) return *this; space(); if (v) write("true"); else write("false"); return *this;}
|
||||
PICout & PICout::operator <<(const char * v) {
|
||||
if (!act_ || !v) return *this;
|
||||
if (v[0] == '\0') return *this;
|
||||
space();
|
||||
quote();
|
||||
write(v);
|
||||
quote();
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout PICout::operator <<(const char v) {if (!act_) return *this; space(); write(v); return *this;}
|
||||
PICout & PICout::operator <<(bool v) {
|
||||
if (!act_) return *this;
|
||||
space();
|
||||
if (v) write("true");
|
||||
else write("false");
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout PICout::operator <<(const uchar v) {PIINTCOUT(ushort(v))}
|
||||
PICout & PICout::operator <<(char v) {
|
||||
if (!act_) return *this;
|
||||
space();
|
||||
write(v);
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout PICout::operator <<(const short int v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(uchar v) {PIINTCOUT(ushort(v))}
|
||||
|
||||
PICout PICout::operator <<(const ushort v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(short int v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const int v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(ushort v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const uint v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(int v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const long v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(uint v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const ulong v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(long v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const llong v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(ulong v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const ullong v) {PIINTCOUT(v)}
|
||||
PICout & PICout::operator <<(llong v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const float v) {if (!act_) return *this; space(); PIFLOATCOUT(v) return *this;}
|
||||
PICout & PICout::operator <<(ullong v) {PIINTCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const double v) {if (!act_) return *this; space(); PIFLOATCOUT(v) return *this;}
|
||||
PICout & PICout::operator <<(float v) {if (!act_) return *this; space(); PIFLOATCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const void * v) {if (!act_) return *this; space(); write("0x" + PIString::fromNumber(ullong(v), 16)); return *this;}
|
||||
PICout & PICout::operator <<(double v) {if (!act_) return *this; space(); PIFLOATCOUT(v)}
|
||||
|
||||
PICout PICout::operator <<(const PIObject * v) {
|
||||
PICout & PICout::operator <<(void * v) {
|
||||
if (!act_) return *this;
|
||||
space();
|
||||
write("0x" + PIString::fromNumber(ullong(v), 16));
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout & PICout::operator <<(const PIObject * v) {
|
||||
if (!act_) return *this;
|
||||
space();
|
||||
if (v == 0) write("PIObject*(0x0)");
|
||||
@@ -382,7 +410,7 @@ PICout PICout::operator <<(const PIObject * v) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
PICout PICout::operator <<(const PICoutSpecialChar v) {
|
||||
PICout & PICout::operator <<(PICoutSpecialChar v) {
|
||||
if (!act_) return *this;
|
||||
switch (v) {
|
||||
case Null:
|
||||
@@ -581,10 +609,10 @@ void PICout::init() {
|
||||
}
|
||||
attr_ = __Private__::dattr;
|
||||
#endif
|
||||
buffer_ = nullptr;
|
||||
id_ = 0;
|
||||
if ((co_ & NoLock) != NoLock)
|
||||
if ((co_ & NoLock) != NoLock) {
|
||||
PICout::__mutex__().lock();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -686,3 +714,11 @@ void PICout::setOutputDevices(PICout::OutputDevices d) {
|
||||
bool PICout::isOutputDeviceActive(PICout::OutputDevice d) {
|
||||
return devs[d];
|
||||
}
|
||||
|
||||
|
||||
PICout PICout::withExternalBuffer(PIString * buffer, int id, PIFlags<PICoutManipulators::PICoutControl> controls) {
|
||||
PICout c(controls);
|
||||
c.buffer_ = buffer;
|
||||
c.id_ = id;
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -140,10 +140,6 @@ public:
|
||||
//! \~russian Конструктор по умолчанию (AddSpaces и AddNewLine), но если не \"active\" то будет неактивным
|
||||
PICout(bool active);
|
||||
|
||||
//! \~english Construct with external buffer and ID "id". See \a Notifier for details
|
||||
//! \~russian Конструктор с внешним буфером и ID "id". Подробнее \a Notifier
|
||||
PICout(PIString * buffer, int id = 0, PIFlags<PICoutManipulators::PICoutControl> controls = PICoutManipulators::AddSpaces | PICoutManipulators::AddNewLine);
|
||||
|
||||
PICout(const PICout & other);
|
||||
|
||||
~PICout();
|
||||
@@ -176,86 +172,87 @@ public:
|
||||
|
||||
//! \~english Output operator for strings with <tt>"const char * "</tt> type
|
||||
//! \~russian Оператор вывода для строк <tt>"const char * "</tt>
|
||||
PICout operator <<(const char * v);
|
||||
PICout & operator <<(const char * v);
|
||||
|
||||
// ! Output operator for strings with <tt>"std::string"</tt> type
|
||||
//PICout operator <<(const std::string & v);
|
||||
//! \~english Output operator for \a PIString
|
||||
//! \~russian Оператор вывода для \a PIString
|
||||
PICout & operator <<(const PIString & v);
|
||||
|
||||
//! \~english Output operator for boolean values
|
||||
//! \~russian Оператор вывода для логических значений
|
||||
PICout operator <<(const bool v);
|
||||
PICout & operator <<(bool v);
|
||||
|
||||
//! \~english Output operator for <tt>"char"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"char"</tt> значений
|
||||
PICout operator <<(const char v);
|
||||
PICout & operator <<(char v);
|
||||
|
||||
//! \~english Output operator for <tt>"unsigned char"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"unsigned char"</tt> значений
|
||||
PICout operator <<(const uchar v);
|
||||
PICout & operator <<(uchar v);
|
||||
|
||||
//! \~english Output operator for <tt>"short"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"short"</tt> значений
|
||||
PICout operator <<(const short v);
|
||||
PICout & operator <<(short v);
|
||||
|
||||
//! \~english Output operator for <tt>"unsigned short"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"unsigned short"</tt> значений
|
||||
PICout operator <<(const ushort v);
|
||||
PICout & operator <<(ushort v);
|
||||
|
||||
//! \~english Output operator for <tt>"int"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"int"</tt> значений
|
||||
PICout operator <<(const int v);
|
||||
PICout & operator <<(int v);
|
||||
|
||||
//! \~english Output operator for <tt>"unsigned int"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"unsigned int"</tt> значений
|
||||
PICout operator <<(const uint v);
|
||||
PICout & operator <<(uint v);
|
||||
|
||||
//! \~english Output operator for <tt>"long"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"long"</tt> значений
|
||||
PICout operator <<(const long v);
|
||||
PICout & operator <<(long v);
|
||||
|
||||
//! \~english Output operator for <tt>"unsigned long"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"unsigned long"</tt> значений
|
||||
PICout operator <<(const ulong v);
|
||||
PICout & operator <<(ulong v);
|
||||
|
||||
//! \~english Output operator for <tt>"long long"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"long long"</tt> значений
|
||||
PICout operator <<(const llong v);
|
||||
PICout & operator <<(llong v);
|
||||
|
||||
//! \~english Output operator for <tt>"unsigned long long"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"unsigned long long"</tt> значений
|
||||
PICout operator <<(const ullong v);
|
||||
PICout & operator <<(ullong v);
|
||||
|
||||
//! \~english Output operator for <tt>"float"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"float"</tt> значений
|
||||
PICout operator <<(const float v);
|
||||
PICout & operator <<(float v);
|
||||
|
||||
//! \~english Output operator for <tt>"double"</tt> values
|
||||
//! \~russian Оператор вывода для <tt>"double"</tt> значений
|
||||
PICout operator <<(const double v);
|
||||
PICout & operator <<(double v);
|
||||
|
||||
//! \~english Output operator for pointers
|
||||
//! \~russian Оператор вывода для указателей
|
||||
PICout operator <<(const void * v);
|
||||
PICout & operator <<(void * v);
|
||||
|
||||
//! \~english Output operator for PIObject and ancestors
|
||||
//! \~russian Оператор вывода для PIObject и наследников
|
||||
PICout operator <<(const PIObject * v);
|
||||
PICout & operator <<(const PIObject * v);
|
||||
|
||||
//! \~english Output operator for \a PICoutSpecialChar values
|
||||
//! \~russian Оператор вывода для \a PICoutSpecialChar
|
||||
PICout operator <<(const PICoutManipulators::PICoutSpecialChar v);
|
||||
PICout & operator <<(PICoutManipulators::PICoutSpecialChar v);
|
||||
|
||||
//! \~english Output operator for \a PIFlags<PICoutFormat> values
|
||||
//! \~russian Оператор вывода для \a PIFlags<PICoutFormat>
|
||||
PICout operator <<(const PIFlags<PICoutManipulators::PICoutFormat> & v);
|
||||
PICout & operator <<(PIFlags<PICoutManipulators::PICoutFormat> v);
|
||||
|
||||
//! \~english Output operator for \a PICoutFormat values
|
||||
//! \~russian Оператор вывода для \a PICoutFormat
|
||||
PICout operator <<(const PICoutManipulators::PICoutFormat v);
|
||||
PICout & operator <<(PICoutManipulators::PICoutFormat v);
|
||||
|
||||
//! \~english Do some action
|
||||
//! \~russian Делает действие
|
||||
PICout operator <<(const PICoutManipulators::PICoutAction v);
|
||||
PICout & operator <<(PICoutManipulators::PICoutAction v);
|
||||
|
||||
//! \~english Set control flag "c" is "on" state
|
||||
//! \~russian Установить флаг "c" в "on" состояние
|
||||
@@ -348,6 +345,11 @@ public:
|
||||
//! \~russian Возвращает активно ли устройство вывода "d"
|
||||
static bool isOutputDeviceActive(OutputDevice d);
|
||||
|
||||
|
||||
//! \~english Construct with external buffer and ID "id". See \a Notifier for details
|
||||
//! \~russian Конструктор с внешним буфером и ID "id". Подробнее \a Notifier
|
||||
static PICout withExternalBuffer(PIString * buffer, int id = 0, PIFlags<PICoutManipulators::PICoutControl> controls = PICoutManipulators::AddSpaces | PICoutManipulators::AddNewLine);
|
||||
|
||||
static PIMutex & __mutex__();
|
||||
static PIString & __string__();
|
||||
|
||||
|
||||
@@ -411,6 +411,12 @@ PIString & PIString::operator +=(const char * str) {
|
||||
}
|
||||
|
||||
|
||||
PIString & PIString::operator +=(const PIByteArray & ba) {
|
||||
appendFromChars((const char * )ba.data(), ba.size_s(), __utf8name__);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
PIString::~PIString() {
|
||||
deleteData();
|
||||
}
|
||||
@@ -1685,11 +1691,3 @@ PIString versionNormalize(const PIString & v) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PICout operator <<(PICout s, const PIString & v) {
|
||||
s.space();
|
||||
s.quote();
|
||||
s.write(v);
|
||||
s.quote();
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
PIString & operator +=(const char c) {d.push_back(PIChar(c)); return *this;}
|
||||
PIString & operator +=(const char * str);
|
||||
PIString & operator +=(const wchar_t * str);
|
||||
PIString & operator +=(const PIByteArray & ba) {appendFromChars((const char * )ba.data(), ba.size_s(), __utf8name__); return *this;}
|
||||
PIString & operator +=(const PIByteArray & ba);
|
||||
PIString & operator +=(const PIString & str);
|
||||
PIString & operator +=(const PIConstChars & str);
|
||||
|
||||
@@ -107,11 +107,11 @@ public:
|
||||
|
||||
//! \~english Contructs string with single character "c".
|
||||
//! \~russian Создает строку из одного символа "c".
|
||||
PIString(const PIChar c) {*this += c;}
|
||||
PIString(const PIChar c) {d.push_back(c);}
|
||||
|
||||
//! \~english Contructs string with single character "c".
|
||||
//! \~russian Создает строку из одного символа "c".
|
||||
PIString(const char c) {*this += PIChar(c);}
|
||||
PIString(const char c) {d.push_back(PIChar(c));}
|
||||
|
||||
//! \~english Contructs string from C-string "str" (system codepage).
|
||||
//! \~russian Создает строку из C-строки "str" (кодировка системы).
|
||||
@@ -1517,12 +1517,6 @@ private:
|
||||
mutable char * data_ = nullptr;
|
||||
};
|
||||
|
||||
|
||||
//! \relatesalso PICout
|
||||
//! \~english Output operator to \a PICout.
|
||||
//! \~russian Оператор вывода в \a PICout.
|
||||
PIP_EXPORT PICout operator <<(PICout s, const PIString & v);
|
||||
|
||||
//! \relatesalso PIBinaryStream
|
||||
//! \~english Store operator.
|
||||
//! \~russian Оператор сохранения.
|
||||
@@ -1548,11 +1542,11 @@ inline PIString operator +(const char * str, const PIString & f) {return PIStrin
|
||||
|
||||
//! \~english Returns concatenated string.
|
||||
//! \~russian Возвращает соединение строк.
|
||||
inline PIString operator +(const char c, const PIString & f) {return PIChar(c) + f;}
|
||||
inline PIString operator +(const char c, const PIString & f) {return PIString(c) + f;}
|
||||
|
||||
//! \~english Returns concatenated string.
|
||||
//! \~russian Возвращает соединение строк.
|
||||
inline PIString operator +(const PIString & f, const char c) {return f + PIChar(c);}
|
||||
inline PIString operator +(const PIString & f, const char c) {PIString s(f); s.push_back(c); return s;}
|
||||
|
||||
|
||||
//! \relatesalso PIString
|
||||
|
||||
Reference in New Issue
Block a user