diff --git a/etk/Pair.hpp b/etk/Pair.hpp index 3be201b..9cbc228 100644 --- a/etk/Pair.hpp +++ b/etk/Pair.hpp @@ -6,6 +6,7 @@ #pragma once #include +#include namespace etk { @@ -20,11 +21,27 @@ namespace etk { second() { } + Pair(ETK_PAIR_TYPE_1&& _obj1, ETK_PAIR_TYPE_2&& _obj2): + first(), + second() { + etk::swap(first, _obj1); + etk::swap(second, _obj2); + } Pair(const ETK_PAIR_TYPE_1& _obj1, const ETK_PAIR_TYPE_2& _obj2): first(_obj1), second(_obj2) { } + Pair(const Pair& _obj): + first(_obj.first), + second(_obj.second) { + + } + Pair(Pair&& _obj): + first(), + second() { + _obj.swap(*this); + } template Pair(const Pair& _pair): first(_pair.first), @@ -39,10 +56,28 @@ namespace etk { return first != _obj.first || second != _obj.second; } + void swap(Pair& _obj) { + etk::swap(first, _obj.first); + etk::swap(second, _obj.second); + } + + Pair& operator=(const Pair& _obj) { + Pair(_obj).swap(*this); + return *this; + } + Pair& operator=(Pair&& _obj) { + Pair(etk::move(_obj)).swap(*this); + return *this; + }/* + template + Pair& operator=(Pair&& _obj) { + Pair(etk::move(_obj)).swap(*this); + return *this; + }*/ }; template Pair makePair(ETK_PAIR_TYPE_1 _obj1, ETK_PAIR_TYPE_2 _obj2) { - return etk::Pair(_obj1, _obj2); + return etk::move(etk::Pair(etk::forward(_obj1), etk::forward(_obj2))); } template etk::Stream& operator <<(etk::Stream& _os, const etk::Pair& _obj) { diff --git a/etk/UString.hpp b/etk/UString.hpp index 4661990..9d8262b 100644 --- a/etk/UString.hpp +++ b/etk/UString.hpp @@ -479,8 +479,6 @@ namespace etk { template ETK_STRING_TYPE to() const; }; - char32_t toLower(char32_t _value); - char32_t toUpper(char32_t _value); bool operator> (const UString& _left, const UString& _right); bool operator>= (const UString& _left, const UString& _right); bool operator< (const UString& _left, const UString& _right);