#include "std_lib_inc.h" #include "FormatError.h" #include "Util.h" #ifndef TASK_H #define TASK_H using err::FormatError; using util::Util; namespace models { class Task { private: int id; string name; string description; vector children; public: Task(const int& id, const string& name, const string& description, const vector& children); Task(); ostream& write(ostream& stream); istream& read(istream&); int get_id() const; string get_name() const; string get_description() const; vector get_children() const; friend ostream& operator<<(ostream& os, const Task& t); friend istream& operator>>(istream& is, Task& t); }; inline ostream& operator<<(ostream& os, const Task& t) { os << t.get_id() << " " << t.get_name() << " " << t.get_description(); return os; } inline istream& operator>>(istream& is, Task& t) { int id; is >> id; if (!is) throw FormatError("Id NaN."); string name = Util::read_string_between_percent(is); string description = Util::read_string_between_percent(is); vector children = Util::read_numbers(is); t = {id, name, description, children}; return is; } } #endif // TASK_H