From 8ab48f61e7d9bc4e4534a234fa2a8da736132996 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Fri, 5 Jun 2015 15:21:05 +0300 Subject: [PATCH] try_implicit_cast<>() --> coerceOrFallback<>() --- .../include/uavcan/node/service_client.hpp | 4 +-- .../include/uavcan/node/service_server.hpp | 4 +-- libuavcan/include/uavcan/node/subscriber.hpp | 4 +-- libuavcan/include/uavcan/node/timer.hpp | 2 +- .../distributed/raft_core.hpp | 2 +- .../uavcan/protocol/panic_listener.hpp | 4 +-- .../include/uavcan/util/method_binder.hpp | 2 +- libuavcan/include/uavcan/util/templates.hpp | 18 ++++++------ libuavcan/test/util/templates.cpp | 28 +++++++++---------- 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/libuavcan/include/uavcan/node/service_client.hpp b/libuavcan/include/uavcan/node/service_client.hpp index 97d0a55fb3..2589be1f8f 100644 --- a/libuavcan/include/uavcan/node/service_client.hpp +++ b/libuavcan/include/uavcan/node/service_client.hpp @@ -405,7 +405,7 @@ public: template void ServiceClient::invokeCallback(ServiceCallResultType& result) { - if (try_implicit_cast(callback_, true)) + if (coerceOrFallback(callback_, true)) { callback_(result); } @@ -496,7 +496,7 @@ template int ServiceClient::call(NodeID server_node_id, const RequestType& request, ServiceCallID& out_call_id) { - if (!try_implicit_cast(callback_, true)) + if (!coerceOrFallback(callback_, true)) { UAVCAN_TRACE("ServiceClient", "Invalid callback"); return -ErrInvalidConfiguration; diff --git a/libuavcan/include/uavcan/node/service_server.hpp b/libuavcan/include/uavcan/node/service_server.hpp index 17076b4c5a..d3340a2528 100644 --- a/libuavcan/include/uavcan/node/service_server.hpp +++ b/libuavcan/include/uavcan/node/service_server.hpp @@ -127,7 +127,7 @@ private: ServiceResponseDataStructure response; - if (try_implicit_cast(callback_, true)) + if (coerceOrFallback(callback_, true)) { UAVCAN_ASSERT(response.isResponseEnabled()); // Enabled by default callback_(request, response); @@ -174,7 +174,7 @@ public: { stop(); - if (!try_implicit_cast(callback, true)) + if (!coerceOrFallback(callback, true)) { UAVCAN_TRACE("ServiceServer", "Invalid callback"); return -ErrInvalidParam; diff --git a/libuavcan/include/uavcan/node/subscriber.hpp b/libuavcan/include/uavcan/node/subscriber.hpp index f5c19f4c78..ac094e5c32 100644 --- a/libuavcan/include/uavcan/node/subscriber.hpp +++ b/libuavcan/include/uavcan/node/subscriber.hpp @@ -72,7 +72,7 @@ private: virtual void handleReceivedDataStruct(ReceivedDataStructure& msg) { - if (try_implicit_cast(callback_, true)) + if (coerceOrFallback(callback_, true)) { callback_(msg); } @@ -101,7 +101,7 @@ public: { stop(); - if (!try_implicit_cast(callback, true)) + if (!coerceOrFallback(callback, true)) { UAVCAN_TRACE("Subscriber", "Invalid callback"); return -ErrInvalidParam; diff --git a/libuavcan/include/uavcan/node/timer.hpp b/libuavcan/include/uavcan/node/timer.hpp index 13fc4f5ed9..7e03031d85 100644 --- a/libuavcan/include/uavcan/node/timer.hpp +++ b/libuavcan/include/uavcan/node/timer.hpp @@ -103,7 +103,7 @@ private: virtual void handleTimerEvent(const TimerEvent& event) { - if (try_implicit_cast(callback_, true)) + if (coerceOrFallback(callback_, true)) { callback_(event); } diff --git a/libuavcan/include/uavcan/protocol/dynamic_node_id_server/distributed/raft_core.hpp b/libuavcan/include/uavcan/protocol/dynamic_node_id_server/distributed/raft_core.hpp index f00fd1ec2f..4a7ed7d331 100644 --- a/libuavcan/include/uavcan/protocol/dynamic_node_id_server/distributed/raft_core.hpp +++ b/libuavcan/include/uavcan/protocol/dynamic_node_id_server/distributed/raft_core.hpp @@ -876,7 +876,7 @@ public: template inline LazyConstructor traverseLogFromEndUntil(const Predicate& predicate) const { - UAVCAN_ASSERT(try_implicit_cast(predicate, true)); + UAVCAN_ASSERT(coerceOrFallback(predicate, true)); for (int index = static_cast(persistent_state_.getLog().getLastIndex()); index >= 0; index--) { const Entry* const entry = persistent_state_.getLog().getEntryAtIndex(Log::Index(index)); diff --git a/libuavcan/include/uavcan/protocol/panic_listener.hpp b/libuavcan/include/uavcan/protocol/panic_listener.hpp index 4a93252608..69a0e71bd7 100644 --- a/libuavcan/include/uavcan/protocol/panic_listener.hpp +++ b/libuavcan/include/uavcan/protocol/panic_listener.hpp @@ -50,7 +50,7 @@ class UAVCAN_EXPORT PanicListener : Noncopyable void invokeCallback(const ReceivedDataStructure& msg) { - if (try_implicit_cast(callback_, true)) + if (coerceOrFallback(callback_, true)) { callback_(msg); } @@ -106,7 +106,7 @@ public: int start(const Callback& callback) { stop(); - if (!try_implicit_cast(callback, true)) + if (!coerceOrFallback(callback, true)) { UAVCAN_TRACE("PanicListener", "Invalid callback"); return -ErrInvalidParam; diff --git a/libuavcan/include/uavcan/util/method_binder.hpp b/libuavcan/include/uavcan/util/method_binder.hpp index 5cf89e07f6..f3bbf424b4 100644 --- a/libuavcan/include/uavcan/util/method_binder.hpp +++ b/libuavcan/include/uavcan/util/method_binder.hpp @@ -46,7 +46,7 @@ public: */ operator bool() const { - return try_implicit_cast(obj_, true) && try_implicit_cast(fun_, true); + return coerceOrFallback(obj_, true) && coerceOrFallback(fun_, true); } /** diff --git a/libuavcan/include/uavcan/util/templates.hpp b/libuavcan/include/uavcan/util/templates.hpp index b32e559d87..a4e609f458 100644 --- a/libuavcan/include/uavcan/util/templates.hpp +++ b/libuavcan/include/uavcan/util/templates.hpp @@ -137,12 +137,12 @@ public: }; /** - * try_implicit_cast<>(From) - * try_implicit_cast<>(From, To) + * coerceOrFallback(From) + * coerceOrFallback(From, To) * @{ */ template -struct UAVCAN_EXPORT TryImplicitCastImpl +struct UAVCAN_EXPORT CoerceOrFallbackImpl { static To impl(const From& from, const To&, TrueType) { return To(from); } static To impl(const From&, const To& default_, FalseType) { return default_; } @@ -154,10 +154,10 @@ struct UAVCAN_EXPORT TryImplicitCastImpl */ template UAVCAN_EXPORT -To try_implicit_cast(const From& from, const To& default_) +To coerceOrFallback(const From& from, const To& default_) { - return TryImplicitCastImpl::impl(from, default_, - BooleanType::Result>()); + return CoerceOrFallbackImpl::impl(from, default_, + BooleanType::Result>()); } /** @@ -166,10 +166,10 @@ To try_implicit_cast(const From& from, const To& default_) */ template UAVCAN_EXPORT -To try_implicit_cast(const From& from) +To coerceOrFallback(const From& from) { - return TryImplicitCastImpl::impl(from, To(), - BooleanType::Result>()); + return CoerceOrFallbackImpl::impl(from, To(), + BooleanType::Result>()); } /** * @} diff --git a/libuavcan/test/util/templates.cpp b/libuavcan/test/util/templates.cpp index d494fdb4e1..dc234dd7f7 100644 --- a/libuavcan/test/util/templates.cpp +++ b/libuavcan/test/util/templates.cpp @@ -21,25 +21,25 @@ struct NonDefaultConstructible NonDefaultConstructible(int) { } }; -TEST(Util, TryImplicitCast) +TEST(Util, CoerceOrFallback) { - using uavcan::try_implicit_cast; + using uavcan::coerceOrFallback; - ASSERT_FALSE(try_implicit_cast(NonConvertible())); - ASSERT_TRUE(try_implicit_cast(NonConvertible(), true)); + ASSERT_FALSE(coerceOrFallback(NonConvertible())); + ASSERT_TRUE(coerceOrFallback(NonConvertible(), true)); - ASSERT_EQ(0, try_implicit_cast(NonConvertible())); - ASSERT_EQ(9000, try_implicit_cast(NonConvertible(), 9000)); + ASSERT_EQ(0, coerceOrFallback(NonConvertible())); + ASSERT_EQ(9000, coerceOrFallback(NonConvertible(), 9000)); - ASSERT_TRUE(try_implicit_cast(ConvertibleToBool(true))); - ASSERT_TRUE(try_implicit_cast(ConvertibleToBool(true), false)); - ASSERT_FALSE(try_implicit_cast(ConvertibleToBool(false))); - ASSERT_FALSE(try_implicit_cast(ConvertibleToBool(false), true)); - ASSERT_EQ(1, try_implicit_cast(ConvertibleToBool(true))); - ASSERT_EQ(0, try_implicit_cast(ConvertibleToBool(false), -100)); + ASSERT_TRUE(coerceOrFallback(ConvertibleToBool(true))); + ASSERT_TRUE(coerceOrFallback(ConvertibleToBool(true), false)); + ASSERT_FALSE(coerceOrFallback(ConvertibleToBool(false))); + ASSERT_FALSE(coerceOrFallback(ConvertibleToBool(false), true)); + ASSERT_EQ(1, coerceOrFallback(ConvertibleToBool(true))); + ASSERT_EQ(0, coerceOrFallback(ConvertibleToBool(false), -100)); - //try_implicit_cast(ConvertibleToBool(true)); // Will fail to compile - try_implicit_cast(NonConvertible(), NonDefaultConstructible(64)); + //coerceOrFallback(ConvertibleToBool(true)); // Will fail to compile + coerceOrFallback(NonConvertible(), NonDefaultConstructible(64)); } TEST(Util, FloatClassification)