diff options
author | Tobias Arrskog <topfs2@xbmc.org> | 2011-05-04 22:45:52 +0200 |
---|---|---|
committer | Tobias Arrskog <topfs2@xbmc.org> | 2011-05-17 20:05:40 +0200 |
commit | cb1b7acaf97f2371cb71b677fa32998ff330e397 (patch) | |
tree | 5cd6a480456a0e877c7524e6b92213c7f30e6828 | |
parent | 911aa688ac8b55d814968112edf070b4b4d40c38 (diff) |
Added swap method to CVariant
-rw-r--r-- | xbmc/utils/Variant.cpp | 12 | ||||
-rw-r--r-- | xbmc/utils/Variant.h | 11 |
2 files changed, 19 insertions, 4 deletions
diff --git a/xbmc/utils/Variant.cpp b/xbmc/utils/Variant.cpp index 616d095056..49fa02838a 100644 --- a/xbmc/utils/Variant.cpp +++ b/xbmc/utils/Variant.cpp @@ -386,6 +386,18 @@ void CVariant::append(CVariant variant) push_back(variant); } +void CVariant::swap(CVariant &rhs) +{ + VariantType temp_type = m_type; + VariantUnion temp_data = m_data; + + m_type = rhs.m_type; + m_data = rhs.m_data; + + rhs.m_type = temp_type; + rhs.m_data = temp_data; +} + CVariant::iterator_array CVariant::begin_array() { if (m_type == VariantTypeArray) diff --git a/xbmc/utils/Variant.h b/xbmc/utils/Variant.h index 72c2ea9d55..57a9b261f9 100644 --- a/xbmc/utils/Variant.h +++ b/xbmc/utils/Variant.h @@ -85,6 +85,8 @@ public: void push_back(CVariant variant); void append(CVariant variant); + void swap(CVariant &rhs); + private: typedef std::vector<CVariant> VariantArray; typedef std::map<std::string, CVariant> VariantMap; @@ -116,9 +118,7 @@ public: void toJsonValue(Json::Value& value) const; private: - VariantType m_type; - - union + union VariantUnion { int64_t integer; uint64_t unsignedinteger; @@ -127,7 +127,10 @@ private: std::string *string; VariantArray *array; VariantMap *map; - } m_data; + }; + + VariantType m_type; + VariantUnion m_data; static CVariant ConstNullVariant; }; |