From 6c2431a3d0460342183682d55ea712b59b2d8bc9 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Tue, 15 Aug 2017 10:20:12 +0100 Subject: [PATCH] Add swap() method. --- src/machinery/pathname.cpp | 7 +++++++ src/machinery/pathname.hpp | 1 + src/machinery/stringpool.hpp | 1 + src/machinery/stringpool.inl | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/src/machinery/pathname.cpp b/src/machinery/pathname.cpp index 6ee899e..e508987 100644 --- a/src/machinery/pathname.cpp +++ b/src/machinery/pathname.cpp @@ -251,4 +251,11 @@ namespace mchlib { std::size_t PathName::str_path_size() const { return calc_join_size(m_pool, is_absolute()); } + + void PathName::swap (PathName& parOther) noexcept { + if (this != &parOther) { + this->m_pool.swap(parOther.m_pool); + std::swap(m_absolute, parOther.m_absolute); + } + } } //namespace mchlib diff --git a/src/machinery/pathname.hpp b/src/machinery/pathname.hpp index f9e0d5e..2660c5b 100644 --- a/src/machinery/pathname.hpp +++ b/src/machinery/pathname.hpp @@ -48,6 +48,7 @@ namespace mchlib { PathName& pop_right ( void ); bool operator!= ( const PathName& parOther ) const; bool operator== ( const PathName& parOther ) const; + void swap (PathName& parOther) noexcept; private: static const std::string m_empty_str; diff --git a/src/machinery/stringpool.hpp b/src/machinery/stringpool.hpp index 16c15dd..6ceabf7 100644 --- a/src/machinery/stringpool.hpp +++ b/src/machinery/stringpool.hpp @@ -58,6 +58,7 @@ namespace mchlib { const string_type* get_stringref_source ( std::size_t parIndex ) const; const stringref_type& operator[] ( std::size_t parIndex ) const; void pop ( void ); + void swap (StringPool& parOther) noexcept; private: PoolType m_pool; diff --git a/src/machinery/stringpool.inl b/src/machinery/stringpool.inl index 5842ff2..cfcc6a4 100644 --- a/src/machinery/stringpool.inl +++ b/src/machinery/stringpool.inl @@ -137,4 +137,10 @@ namespace mchlib { } return; } + + template + void StringPool::swap (StringPool& parOther) noexcept { + m_pool.swap(parOther.m_pool); + m_strings.swap(parOther.m_strings); + } } //namespace mchlib