src/model.h

changeset 26
3a9e761e4faa
parent 24
1a0faaaceb84
child 35
98906a94732f
--- a/src/model.h	Sun Jan 19 14:25:57 2020 +0200
+++ b/src/model.h	Wed Jan 22 00:23:29 2020 +0200
@@ -50,10 +50,10 @@
 private:
 	using ModelObjectPointer = std::unique_ptr<linetypes::Object>;
 	template<typename T, typename... Args>
-	T* append(Args&&... args);
+	linetypes::Id append(Args&&... args);
 	void append(ModelObjectPointer&& object);
 	template<typename T, typename... Args>
-	T* insert(int position, Args&&... args);
+	linetypes::Id insert(int position, Args&&... args);
 	bool modified = false;
 	QString path;
 	LDHeader header;
@@ -64,25 +64,25 @@
 };
 
 template<typename T, typename... Args>
-T* Model::append(Args&&... args)
+linetypes::Id Model::append(Args&&... args)
 {
 	emit layoutAboutToBeChanged();
 	this->body.push_back(std::make_unique<T>(args...));
-	T* pointer = static_cast<T*>(this->body.back().get());
+	linetypes::Object* pointer = this->body.back().get();
 	this->objectsById[pointer->id] = pointer;
 	emit objectAdded(pointer->id, this->body.size() - 1);
 	emit layoutChanged();
-	return pointer;
+	return pointer->id;
 }
 
 template<typename T, typename... Args>
-T* Model::insert(int position, Args&&... args)
+linetypes::Id Model::insert(int position, Args&&... args)
 {
 	emit layoutAboutToBeChanged();
 	this->body.insert(position, std::make_unique<T>(args...));
-	T* pointer = static_cast<T*>(this->body[position]);
+	linetypes::Object* pointer = this->body[position].get();
 	this->objectsById[pointer->id] = pointer;
 	emit objectAdded(pointer->id, position);
 	emit layoutChanged();
-	return pointer;
+	return pointer->id;
 }

mercurial