git-svn-id: svn://db.shs.com.ru/pip@677 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2018-12-25 20:29:30 +00:00
parent 340a239f03
commit dc790b44c8
16 changed files with 193 additions and 57 deletions

View File

@@ -464,7 +464,7 @@ PIString PIVariant::toString() const {
case PIVariant::pivDate: {PIDate r; ba >> r; return r.toString();}
case PIVariant::pivDateTime: {PIDateTime r; ba >> r; return r.toString();}
case PIVariant::pivString: {PIString r; ba >> r; return r;}
case PIVariant::pivStringList: {PIStringList r; ba >> r; if (r.isEmpty()) return PIString(); return r.front();}
case PIVariant::pivStringList: {PIStringList r; ba >> r; if (r.isEmpty()) return PIString(); return r.join(";");}
case PIVariant::pivEnum: {PIVariantTypes::Enum r; ba >> r; return r.selectedName();}
case PIVariant::pivFile: {PIVariantTypes::File r; ba >> r; return r.file;}
case PIVariant::pivDir: {PIVariantTypes::Dir r; ba >> r; return r.dir;}

View File

@@ -104,6 +104,28 @@ PIPropertyStorage PIVariantTypes::IODevice::get() const {
}
PIString PIVariantTypes::IODevice::toString() const {
PIString s;
s << "IODevice(" << prefix << ", ";
int rwc = 0;
if (mode & 1) {s << "r"; ++rwc;}
if (mode & 2) {s << "w"; ++rwc;}
if (rwc == 1) s << "o";
if (options != 0) {
if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingRead])
s << " br";
if (((PIIODevice::DeviceOptions)options)[PIIODevice::BlockingWrite])
s << " bw";
}
PIPropertyStorage ps = get();
piForeachC (PIPropertyStorage::Property & p, ps) {
s << ", " << p.name << "=\"" << p.value.toString() << "\"";
}
s << ")";
return s;
}
PIVariantTypes::Enum & PIVariantTypes::Enum::operator <<(const PIVariantTypes::Enumerator & v) {
@@ -123,28 +145,3 @@ PIVariantTypes::Enum & PIVariantTypes::Enum::operator <<(const PIStringList & v)
(*this) << s.trimmed();
return *this;
}
PICout operator <<(PICout s, const PIVariantTypes::IODevice & v) {
s.setControl(0, true);
s << "IODevice(" << v.prefix << ", ";
int rwc = 0;
if (v.mode & 1) {s << "r"; ++rwc;}
if (v.mode & 2) {s << "w"; ++rwc;}
if (rwc == 1) s << "o";
if (v.options != 0) {
if (((PIIODevice::DeviceOptions)v.options)[PIIODevice::BlockingRead])
s << " br";
if (((PIIODevice::DeviceOptions)v.options)[PIIODevice::BlockingWrite])
s << " bw";
}
PIPropertyStorage ps = v.get();
piForeachC (PIPropertyStorage::Property & p, ps) {
s << ", " << p.name << "=\"" << p.value.toString() << "\"";
}
s << ")";
s.restoreControl();
return s;
}

View File

@@ -81,6 +81,7 @@ namespace PIVariantTypes {
IODevice();
void set(const PIPropertyStorage & ps);
PIPropertyStorage get() const;
PIString toString() const;
PIString prefix;
int mode; // PIIODevice::DeviceMode
int options; // PIIODevice::DeviceOptions
@@ -111,7 +112,7 @@ inline PICout operator <<(PICout s, const PIVariantTypes::Color & v) {s.saveCont
inline PIByteArray & operator <<(PIByteArray & s, const PIVariantTypes::IODevice & v) {s << v.prefix << v.mode << v.options << v.props; return s;}
inline PIByteArray & operator >>(PIByteArray & s, PIVariantTypes::IODevice & v) {s >> v.prefix >> v.mode >> v.options >> v.props; return s;}
PICout operator <<(PICout s, const PIVariantTypes::IODevice & v);
inline PICout operator <<(PICout s, const PIVariantTypes::IODevice & v) {s << v.toString(); return s;}
#endif // PIVARIANTYPES_H