diff options
Diffstat (limited to 'UnityCore')
| -rw-r--r-- | UnityCore/Variant.cpp | 14 | ||||
| -rw-r--r-- | UnityCore/Variant.h | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/UnityCore/Variant.cpp b/UnityCore/Variant.cpp index 21507d001..e8eba40a2 100644 --- a/UnityCore/Variant.cpp +++ b/UnityCore/Variant.cpp @@ -31,7 +31,7 @@ Variant::Variant() Variant::Variant(GVariant* variant) : variant_(variant) { - g_variant_ref_sink(variant_); + if (variant) g_variant_ref_sink(variant_); } Variant::Variant(GVariant* variant, StealRef const& ref) @@ -95,6 +95,11 @@ bool Variant::ASVToHints(HintsMap& hints) const return true; } +void Variant::swap(Variant& other) +{ + std::swap(this->variant_, other.variant_); +} + Variant& Variant::operator=(GVariant* val) { if (variant_) g_variant_unref(variant_); @@ -103,6 +108,13 @@ Variant& Variant::operator=(GVariant* val) return *this; } +Variant& Variant::operator=(Variant other) +{ + swap(other); + + return *this; +} + Variant::operator GVariant* () const { return variant_; diff --git a/UnityCore/Variant.h b/UnityCore/Variant.h index a851a060d..1dcebd38d 100644 --- a/UnityCore/Variant.h +++ b/UnityCore/Variant.h @@ -53,7 +53,9 @@ public: bool ASVToHints(HintsMap& hints) const; + void swap(Variant&); Variant& operator=(GVariant*); + Variant& operator=(Variant); operator GVariant*() const; operator bool() const; |
