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; | 
