diff options
author | bubnikv <bubnikv@gmail.com> | 2017-01-20 16:39:44 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2017-01-20 16:39:44 +0300 |
commit | 29b986fa76e0725b02fdf58e083c5b93dffbbacd (patch) | |
tree | e6982e4dd1602eafb1aabd5d2f11598dcf09f20c /xs/src/libslic3r/ExtrusionEntity.hpp | |
parent | d5f9db76b3bef6fb81d7110226568e94a9ec666f (diff) |
Improvement of the move semantics on various objects:
The source object will be empty after the move operation.
Diffstat (limited to 'xs/src/libslic3r/ExtrusionEntity.hpp')
-rw-r--r-- | xs/src/libslic3r/ExtrusionEntity.hpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/xs/src/libslic3r/ExtrusionEntity.hpp b/xs/src/libslic3r/ExtrusionEntity.hpp index a04524767..d7b683801 100644 --- a/xs/src/libslic3r/ExtrusionEntity.hpp +++ b/xs/src/libslic3r/ExtrusionEntity.hpp @@ -78,7 +78,12 @@ public: ExtrusionPath(ExtrusionRole role) : role(role), mm3_per_mm(-1), width(-1), height(-1) {}; ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : role(role), mm3_per_mm(mm3_per_mm), width(width), height(height) {}; + ExtrusionPath(ExtrusionPath &&rhs) : role(rhs.role), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), polyline(std::move(rhs.polyline)) {} // ExtrusionPath(ExtrusionRole role, const Flow &flow) : role(role), mm3_per_mm(flow.mm3_per_mm()), width(flow.width), height(flow.height) {}; + + ExtrusionPath& operator=(const ExtrusionPath &rhs) { this->role = rhs.role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = rhs.polyline; return *this; } + ExtrusionPath& operator=(ExtrusionPath &&rhs) { this->role = rhs.role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->polyline = std::move(rhs.polyline); return *this; } + ExtrusionPath* clone() const { return new ExtrusionPath (*this); } void reverse() { this->polyline.reverse(); } Point first_point() const { return this->polyline.points.front(); } @@ -140,8 +145,14 @@ public: ExtrusionPaths paths; ExtrusionMultiPath() {}; + ExtrusionMultiPath(const ExtrusionMultiPath &rhs) : paths(rhs.paths) {} + ExtrusionMultiPath(ExtrusionMultiPath &&rhs) : paths(std::move(rhs.paths)) {} ExtrusionMultiPath(const ExtrusionPaths &paths) : paths(paths) {}; ExtrusionMultiPath(const ExtrusionPath &path) { this->paths.push_back(path); } + + ExtrusionMultiPath& operator=(const ExtrusionMultiPath &rhs) { this->paths = rhs.paths; return *this; } + ExtrusionMultiPath& operator=(ExtrusionMultiPath &&rhs) { this->paths = std::move(rhs.paths); return *this; } + bool is_loop() const { return false; } bool can_reverse() const { return true; } ExtrusionMultiPath* clone() const { return new ExtrusionMultiPath(*this); } |