From d25abed9d281c4a5c09516584ce9a73417aa2387 Mon Sep 17 00:00:00 2001 From: artemp Date: Tue, 27 May 2014 11:43:46 +0100 Subject: [PATCH] custom swap --- include/mapnik/feature_type_style.hpp | 2 ++ src/feature_type_style.cpp | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/mapnik/feature_type_style.hpp b/include/mapnik/feature_type_style.hpp index 958a7c65b..72afdacab 100644 --- a/include/mapnik/feature_type_style.hpp +++ b/include/mapnik/feature_type_style.hpp @@ -63,9 +63,11 @@ private: boost::optional comp_op_; float opacity_; bool image_filters_inflate_; + friend void swap(feature_type_style& lhs, feature_type_style & rhs); public: feature_type_style(); feature_type_style(feature_type_style const& rhs); + feature_type_style(feature_type_style &&) = default; feature_type_style& operator=(feature_type_style rhs); void add_rule(rule && rule); diff --git a/src/feature_type_style.cpp b/src/feature_type_style.cpp index 78b23b850..c35cd3a25 100644 --- a/src/feature_type_style.cpp +++ b/src/feature_type_style.cpp @@ -62,10 +62,22 @@ feature_type_style::feature_type_style(feature_type_style const& rhs) feature_type_style& feature_type_style::operator=(feature_type_style rhs) { - std::swap(*this, rhs); + swap(*this, rhs); return *this; } +void swap( feature_type_style & lhs, feature_type_style & rhs) +{ + using std::swap; + std::swap(lhs.rules_, rhs.rules_); + std::swap(lhs.filter_mode_, rhs.filter_mode_); + std::swap(lhs.filters_, rhs.filters_); + std::swap(lhs.direct_filters_, rhs.direct_filters_); + std::swap(lhs.comp_op_, rhs.comp_op_); + std::swap(lhs.opacity_, rhs.opacity_); + std::swap(lhs.image_filters_inflate_, rhs.image_filters_inflate_); +} + void feature_type_style::add_rule(rule && rule) { rules_.push_back(std::move(rule));