From c6b9f1315ab14a4aca47ef0738749d2e314c46e4 Mon Sep 17 00:00:00 2001 From: "Dirk O. Kaar" Date: Wed, 22 May 2019 14:02:51 +0200 Subject: [PATCH 1/4] std::bind has issues with type inference, use lambdas whereever possible. --- libraries/ESP8266mDNS/src/LEAmDNS.cpp | 10 +++++----- libraries/Ticker/Ticker.h | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/ESP8266mDNS/src/LEAmDNS.cpp b/libraries/ESP8266mDNS/src/LEAmDNS.cpp index 7b40034254..53c89ec219 100644 --- a/libraries/ESP8266mDNS/src/LEAmDNS.cpp +++ b/libraries/ESP8266mDNS/src/LEAmDNS.cpp @@ -97,14 +97,14 @@ bool MDNSResponder::begin(const char* p_pcHostname) { m_GotIPHandler = WiFi.onStationModeGotIP([this](const WiFiEventStationModeGotIP& pEvent) { (void) pEvent; // Ensure that _restart() runs in USER context - schedule_function(std::bind(&MDNSResponder::_restart, this)); + schedule_function([this]() { MDNSResponder::_restart(); }); }); m_DisconnectedHandler = WiFi.onStationModeDisconnected([this](const WiFiEventStationModeDisconnected& pEvent) { (void) pEvent; // Ensure that _restart() runs in USER context - schedule_function(std::bind(&MDNSResponder::_restart, this)); - }); + schedule_function([this]() { MDNSResponder::_restart(); }); + }); bResult = _restart(); } @@ -1060,7 +1060,7 @@ bool MDNSResponder::setHostProbeResultCallback(MDNSResponder::MDNSHostProbeFn p_ bool MDNSResponder::setHostProbeResultCallback(MDNSHostProbeFn1 pfn) { using namespace std::placeholders; - return setHostProbeResultCallback(std::bind(pfn, std::ref(*this), _1, _2)); + return setHostProbeResultCallback([obj=std::ref(*this), pfn](const char* _1, bool _2) { pfn(obj, _1, _2); }); } /* @@ -1089,7 +1089,7 @@ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSServ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSService p_hService, MDNSResponder::MDNSServiceProbeFn1 p_fnCallback) { using namespace std::placeholders; - return setServiceProbeResultCallback(p_hService, std::bind(p_fnCallback, std::ref(*this), _1, _2, _3)); + return setServiceProbeResultCallback(p_hService, [obj=std::ref(*this), p_fnCallback](const char* _1, const hMDNSService _2, bool _3) { p_fnCallback(obj, _1, _2, _3); }); } diff --git a/libraries/Ticker/Ticker.h b/libraries/Ticker/Ticker.h index 15474594f0..8ecc47581f 100644 --- a/libraries/Ticker/Ticker.h +++ b/libraries/Ticker/Ticker.h @@ -43,7 +43,7 @@ class Ticker void attach_scheduled(float seconds, callback_function_t callback) { - attach(seconds,std::bind(schedule_function, callback)); + attach(seconds, [callback]() { schedule_function(callback); }); } void attach(float seconds, callback_function_t callback) @@ -54,7 +54,7 @@ class Ticker void attach_ms_scheduled(uint32_t milliseconds, callback_function_t callback) { - attach_ms(milliseconds, std::bind(schedule_function, callback)); + attach_ms(milliseconds, [callback]() { schedule_function(callback); }); } void attach_ms(uint32_t milliseconds, callback_function_t callback) @@ -84,7 +84,7 @@ class Ticker void once_scheduled(float seconds, callback_function_t callback) { - once(seconds, std::bind(schedule_function, callback)); + once(seconds, [callback]() { schedule_function(callback); }); } void once(float seconds, callback_function_t callback) @@ -95,7 +95,7 @@ class Ticker void once_ms_scheduled(uint32_t milliseconds, callback_function_t callback) { - once_ms(milliseconds, std::bind(schedule_function, callback)); + once_ms(milliseconds, [callback]() { schedule_function(callback); }); } void once_ms(uint32_t milliseconds, callback_function_t callback) From 362c5573a43e1065e608ad5e5d2cc5d82109ad73 Mon Sep 17 00:00:00 2001 From: "Dirk O. Kaar" Date: Wed, 22 May 2019 14:38:28 +0200 Subject: [PATCH 2/4] Fix indentation. --- libraries/ESP8266mDNS/src/LEAmDNS.cpp | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/libraries/ESP8266mDNS/src/LEAmDNS.cpp b/libraries/ESP8266mDNS/src/LEAmDNS.cpp index 53c89ec219..c9cc5d2519 100644 --- a/libraries/ESP8266mDNS/src/LEAmDNS.cpp +++ b/libraries/ESP8266mDNS/src/LEAmDNS.cpp @@ -97,14 +97,14 @@ bool MDNSResponder::begin(const char* p_pcHostname) { m_GotIPHandler = WiFi.onStationModeGotIP([this](const WiFiEventStationModeGotIP& pEvent) { (void) pEvent; // Ensure that _restart() runs in USER context - schedule_function([this]() { MDNSResponder::_restart(); }); + schedule_function([this]() { MDNSResponder::_restart(); }); }); m_DisconnectedHandler = WiFi.onStationModeDisconnected([this](const WiFiEventStationModeDisconnected& pEvent) { (void) pEvent; // Ensure that _restart() runs in USER context - schedule_function([this]() { MDNSResponder::_restart(); }); - }); + schedule_function([this]() { MDNSResponder::_restart(); }); + }); bResult = _restart(); } @@ -137,10 +137,10 @@ bool MDNSResponder::begin(const char* p_pcHostname, */ bool MDNSResponder::close(void) { - m_GotIPHandler.reset(); // reset WiFi event callbacks. - m_DisconnectedHandler.reset(); + m_GotIPHandler.reset(); // reset WiFi event callbacks. + m_DisconnectedHandler.reset(); - _announce(false, true); + _announce(false, true); _resetProbeStatus(false); // Stop probing _releaseServiceQueries(); @@ -159,7 +159,7 @@ bool MDNSResponder::close(void) { */ bool MDNSResponder::end(void) { - return close(); + return close(); } /* @@ -832,11 +832,11 @@ uint32_t MDNSResponder::answerCount(const MDNSResponder::hMDNSServiceQuery p_hSe std::vector MDNSResponder::answerInfo (const MDNSResponder::hMDNSServiceQuery p_hServiceQuery) { std::vector tempVector; - for (uint32_t i=0;i Date: Fri, 24 May 2019 07:43:06 +0200 Subject: [PATCH 3/4] More descriptive placeholder name in lambda expression --- libraries/ESP8266mDNS/src/LEAmDNS.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266mDNS/src/LEAmDNS.cpp b/libraries/ESP8266mDNS/src/LEAmDNS.cpp index c9cc5d2519..17e2a65b2e 100644 --- a/libraries/ESP8266mDNS/src/LEAmDNS.cpp +++ b/libraries/ESP8266mDNS/src/LEAmDNS.cpp @@ -1060,7 +1060,7 @@ bool MDNSResponder::setHostProbeResultCallback(MDNSResponder::MDNSHostProbeFn p_ bool MDNSResponder::setHostProbeResultCallback(MDNSHostProbeFn1 pfn) { using namespace std::placeholders; - return setHostProbeResultCallback([obj=std::ref(*this), pfn](const char* _1, bool _2) { pfn(obj, _1, _2); }); + return setHostProbeResultCallback([resp=std::ref(*this), pfn](const char* _1, bool _2) { pfn(resp, _1, _2); }); } /* @@ -1089,7 +1089,7 @@ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSServ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSService p_hService, MDNSResponder::MDNSServiceProbeFn1 p_fnCallback) { using namespace std::placeholders; - return setServiceProbeResultCallback(p_hService, [obj=std::ref(*this), p_fnCallback](const char* _1, const hMDNSService _2, bool _3) { p_fnCallback(obj, _1, _2, _3); }); + return setServiceProbeResultCallback(p_hService, [resp=std::ref(*this), p_fnCallback](const char* _1, const hMDNSService _2, bool _3) { p_fnCallback(resp, _1, _2, _3); }); } From e6d9ba211b1060e2055eaa4ecb9bfe02a688c4c8 Mon Sep 17 00:00:00 2001 From: "Dirk O. Kaar" Date: Fri, 24 May 2019 07:54:17 +0200 Subject: [PATCH 4/4] Use formal argument names for remaining currying placeholders --- libraries/ESP8266mDNS/src/LEAmDNS.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266mDNS/src/LEAmDNS.cpp b/libraries/ESP8266mDNS/src/LEAmDNS.cpp index 17e2a65b2e..7227784c83 100644 --- a/libraries/ESP8266mDNS/src/LEAmDNS.cpp +++ b/libraries/ESP8266mDNS/src/LEAmDNS.cpp @@ -1060,7 +1060,7 @@ bool MDNSResponder::setHostProbeResultCallback(MDNSResponder::MDNSHostProbeFn p_ bool MDNSResponder::setHostProbeResultCallback(MDNSHostProbeFn1 pfn) { using namespace std::placeholders; - return setHostProbeResultCallback([resp=std::ref(*this), pfn](const char* _1, bool _2) { pfn(resp, _1, _2); }); + return setHostProbeResultCallback([resp=std::ref(*this), pfn](const char* p_pcDomainName, bool p_bProbeResult) { pfn(resp, p_pcDomainName, p_bProbeResult); }); } /* @@ -1089,7 +1089,9 @@ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSServ bool MDNSResponder::setServiceProbeResultCallback(const MDNSResponder::hMDNSService p_hService, MDNSResponder::MDNSServiceProbeFn1 p_fnCallback) { using namespace std::placeholders; - return setServiceProbeResultCallback(p_hService, [resp=std::ref(*this), p_fnCallback](const char* _1, const hMDNSService _2, bool _3) { p_fnCallback(resp, _1, _2, _3); }); + return setServiceProbeResultCallback(p_hService, [resp=std::ref(*this), p_fnCallback](const char* p_pcServiceName, const hMDNSService p_hMDNSService, bool p_bProbeResult) { + p_fnCallback(resp, p_pcServiceName, p_hMDNSService, p_bProbeResult); + }); }