diff --git a/xs/src/libslic3r/ExtrusionEntityCollection.cpp b/xs/src/libslic3r/ExtrusionEntityCollection.cpp index 14f519250..44f0da8fc 100644 --- a/xs/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/xs/src/libslic3r/ExtrusionEntityCollection.cpp @@ -5,12 +5,6 @@ namespace Slic3r { -ExtrusionEntityCollection::ExtrusionEntityCollection(const ExtrusionEntityCollection& collection) - : orig_indices(collection.orig_indices), no_sort(collection.no_sort) -{ - this->append(collection.entities); -} - ExtrusionEntityCollection::ExtrusionEntityCollection(const ExtrusionPaths &paths) : no_sort(false) { diff --git a/xs/src/libslic3r/ExtrusionEntityCollection.hpp b/xs/src/libslic3r/ExtrusionEntityCollection.hpp index 49c063c70..00a37f9b3 100644 --- a/xs/src/libslic3r/ExtrusionEntityCollection.hpp +++ b/xs/src/libslic3r/ExtrusionEntityCollection.hpp @@ -14,9 +14,12 @@ public: std::vector<size_t> orig_indices; // handy for XS bool no_sort; ExtrusionEntityCollection(): no_sort(false) {}; - ExtrusionEntityCollection(const ExtrusionEntityCollection &collection); + ExtrusionEntityCollection(const ExtrusionEntityCollection &other) : orig_indices(other.orig_indices), no_sort(other.no_sort) { this->append(other.entities); } + ExtrusionEntityCollection(ExtrusionEntityCollection &&other) : entities(std::move(other.entities)), orig_indices(std::move(other.orig_indices)), no_sort(other.no_sort) {} ExtrusionEntityCollection(const ExtrusionPaths &paths); - ExtrusionEntityCollection& operator= (const ExtrusionEntityCollection &other); + ExtrusionEntityCollection& operator=(const ExtrusionEntityCollection &other); + ExtrusionEntityCollection& operator=(ExtrusionEntityCollection &&other) + { this->entities = std::move(other.entities); this->orig_indices = std::move(other.orig_indices); this->no_sort = other.no_sort; return *this; } ~ExtrusionEntityCollection() { clear(); } operator ExtrusionPaths() const;