Mon, 23 Sep 2019 14:06:36 +0300
added regular expressions for the parser
#pragma once #include <memory> #include "main.h" #include "header.h" #include "objecttypes/modelobject.h" class Model : public QObject { Q_OBJECT public: class EditContext; Model(); Model(const Model &) = delete; int size() const; EditContext edit(); private: template<typename T, typename... Args> T* append(Args&&... args); template<typename T, typename... Args> T* insert(int position, Args&&... args); bool modified = false; QString path; using ModelObjectPointer = std::unique_ptr<modelobjects::BaseObject>; LDHeader header; std::vector<ModelObjectPointer> body; }; template<typename T, typename... Args> T* Model::append(Args&&... args) { this->body.push_back(std::make_unique<T>(args...)); return static_cast<T*>(this->body.back().get()); } template<typename T, typename... Args> T* Model::insert(int position, Args&&... args) { this->body.insert(position, std::make_unique<T>(args...)); return this->body[position]; }