diff options
Diffstat (limited to 'store/works/life/cpp-practicum/Book.cpp')
| -rw-r--r-- | store/works/life/cpp-practicum/Book.cpp | 36 | 
1 files changed, 36 insertions, 0 deletions
diff --git a/store/works/life/cpp-practicum/Book.cpp b/store/works/life/cpp-practicum/Book.cpp new file mode 100644 index 0000000..bf67d7c --- /dev/null +++ b/store/works/life/cpp-practicum/Book.cpp @@ -0,0 +1,36 @@ +#include "Book.hpp"
 +
 +#include <QString>
 +
 +QTextStream &operator>>(QTextStream &left, Book &right) {
 +  auto line = left.readLine();
 +
 +  auto fields = line.split(QChar('|'));
 +
 +  if (fields.size() != 6) {
 +    throw SerializationException("The line has not 6 parts.");
 +  }
 +
 +  right.SetIsbn(fields[0].toStdU16String());
 +  right.SetTitle(fields[1].toStdU16String());
 +  right.SetType(fields[2].toStdU16String());
 +  right.SetAuthor(fields[3].toStdU16String());
 +  right.SetPress(fields[4].toStdU16String());
 +
 +  bool ok;
 +  auto stock_count = fields[5].toInt(&ok);
 +  if (!ok) {
 +    throw SerializationException("Part 6 is not a number.");
 +  }
 +
 +  right.SetStockCount(stock_count);
 +
 +  return left;
 +}
 +
 +QTextStream &operator<<(QTextStream &left, const Book &right) {
 +  left << right.GetIsbn() << '|' << right.GetTitle() << '|' << right.GetType()
 +       << '|' << right.GetAuthor() << '|' << right.GetPress() << '|'
 +       << right.GetStockCount();
 +  return left;
 +}
  | 
