From 00a987369d31ac27cda0d6318fc1305aac17c80e Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sat, 1 Apr 2017 19:54:42 +1100 Subject: [PATCH] Removed 'mutable' member of variant_callable In the old code, both this and the const version were part of a union, which meant both got intialized with a value. Now, the mutable variable was always nullptr. Since we cannot pass a non-const callable ptr to the variant ctor, we need to use const_cast. --- src/formula/variant.hpp | 10 ++-------- src/formula/variant_private.cpp | 1 - src/formula/variant_private.hpp | 6 ------ 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/formula/variant.hpp b/src/formula/variant.hpp index c098114b98a1..faf7718182ef 100644 --- a/src/formula/variant.hpp +++ b/src/formula/variant.hpp @@ -98,12 +98,6 @@ class variant return value_cast()->get_callable(); } - game_logic::formula_callable_ptr mutable_callable() const - { - must_be(VARIANT_TYPE::TYPE_CALLABLE); - return value_cast()->get_callable_mutable(); - } - template T* try_convert() const { @@ -111,13 +105,13 @@ class variant return nullptr; } - return dynamic_cast(mutable_callable().get()); + return dynamic_cast(const_cast(as_callable().get())); } template T* convert_to() const { - T* res = dynamic_cast(mutable_callable().get()); + T* res = dynamic_cast(const_cast(as_callable().get())); if(!res) { throw type_error("could not convert type"); } diff --git a/src/formula/variant_private.cpp b/src/formula/variant_private.cpp index b8e3bfcf0a1b..143cac4fb2eb 100644 --- a/src/formula/variant_private.cpp +++ b/src/formula/variant_private.cpp @@ -66,7 +66,6 @@ std::string variant_decimal::to_string_impl(const bool sign_value) const variant_callable::variant_callable(const formula_callable* callable) : callable_(callable) - , mutable_callable_(nullptr) // FIXME {} std::string variant_callable::get_serialized_string() const diff --git a/src/formula/variant_private.hpp b/src/formula/variant_private.hpp index ea3ad0bae851..52131153d7cd 100644 --- a/src/formula/variant_private.hpp +++ b/src/formula/variant_private.hpp @@ -272,11 +272,6 @@ class variant_callable : public virtual variant_value_base return callable_; } - formula_callable_ptr get_callable_mutable() - { - return mutable_callable_; - } - virtual std::string string_cast() const override { return "(object)"; @@ -296,7 +291,6 @@ class variant_callable : public virtual variant_value_base private: const_formula_callable_ptr callable_; - formula_callable_ptr mutable_callable_; };