aboutsummaryrefslogtreecommitdiff
path: root/works/life/cpp-practicum/Vendor.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-12 15:55:21 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-12 15:55:21 +0800
commit10eb95869601e145b1d8bc909424777c25752d51 (patch)
tree49449a4076ded9bd937a51679318edbe2a532cae /works/life/cpp-practicum/Vendor.cpp
parent29ba3e88b1a7425fe00af0005b8a8228103aa21c (diff)
parentf8c10dd1fc55e60f35286475356e48c4f642eb63 (diff)
downloadcrupest-10eb95869601e145b1d8bc909424777c25752d51.tar.gz
crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.bz2
crupest-10eb95869601e145b1d8bc909424777c25752d51.zip
import(life): IMPORT crupest/life COMPLETE.
Diffstat (limited to 'works/life/cpp-practicum/Vendor.cpp')
-rw-r--r--works/life/cpp-practicum/Vendor.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/works/life/cpp-practicum/Vendor.cpp b/works/life/cpp-practicum/Vendor.cpp
new file mode 100644
index 0000000..7544451
--- /dev/null
+++ b/works/life/cpp-practicum/Vendor.cpp
@@ -0,0 +1,33 @@
+#include "Vendor.hpp"
+
+#include <QString>
+
+QTextStream &operator>>(QTextStream &left, Vendor &right) {
+ auto line = left.readLine();
+
+ auto fields = line.split(QChar('|'));
+
+ if (fields.size() != 5) {
+ throw SerializationException("Line has not 5 parts.");
+ }
+
+ bool ok;
+ auto id = fields[0].toInt(&ok);
+ if (!ok) {
+ throw SerializationException("Part 1 is not a number.");
+ }
+
+ right.SetId(id);
+ right.SetName(fields[1].toStdU16String());
+ right.SetType(fields[2].toStdU16String());
+ right.SetAddress(fields[3].toStdU16String());
+ right.SetPhone(fields[4].toStdU16String());
+
+ return left;
+}
+
+QTextStream &operator<<(QTextStream &left, const Vendor &right) {
+ left << right.GetId() << '|' << right.GetName() << '|' << right.GetType()
+ << '|' << right.GetAddress() << '|' << right.GetPhone();
+ return left;
+}