Use standard version of make_unique when available (#2292)

This commit is contained in:
Oxan van Leeuwen 2021-09-14 14:27:35 +02:00 committed by GitHub
parent 4cc2817fcd
commit 716039e452
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 35 additions and 20 deletions

View file

@ -70,7 +70,6 @@ Checks: >-
-modernize-use-default-member-init, -modernize-use-default-member-init,
-modernize-use-equals-default, -modernize-use-equals-default,
-modernize-use-trailing-return-type, -modernize-use-trailing-return-type,
-modernize-make-unique,
-modernize-use-nodiscard, -modernize-use-nodiscard,
-mpi-*, -mpi-*,
-objc-*, -objc-*,
@ -114,6 +113,10 @@ CheckOptions:
value: llvm value: llvm
- key: modernize-use-nullptr.NullMacros - key: modernize-use-nullptr.NullMacros
value: 'NULL' value: 'NULL'
- key: modernize-make-unique.MakeSmartPtrFunction
value: 'make_unique'
- key: modernize-make-unique.MakeSmartPtrFunctionHeader
value: 'esphome/core/helpers.h'
- key: readability-identifier-naming.LocalVariableCase - key: readability-identifier-naming.LocalVariableCase
value: 'lower_case' value: 'lower_case'
- key: readability-identifier-naming.ClassCase - key: readability-identifier-naming.ClassCase

View file

@ -83,11 +83,11 @@ bool NdefMessage::add_text_record(const std::string &text) { return this->add_te
bool NdefMessage::add_text_record(const std::string &text, const std::string &encoding) { bool NdefMessage::add_text_record(const std::string &text, const std::string &encoding) {
std::string payload = to_string(text.length()) + encoding + text; std::string payload = to_string(text.length()) + encoding + text;
return this->add_record(std::unique_ptr<NdefRecord>{new NdefRecord(TNF_WELL_KNOWN, "T", payload)}); return this->add_record(make_unique<NdefRecord>(TNF_WELL_KNOWN, "T", payload));
} }
bool NdefMessage::add_uri_record(const std::string &uri) { bool NdefMessage::add_uri_record(const std::string &uri) {
return this->add_record(std::unique_ptr<NdefRecord>{new NdefRecord(TNF_WELL_KNOWN, "U", uri)}); return this->add_record(make_unique<NdefRecord>(TNF_WELL_KNOWN, "U", uri));
} }
std::vector<uint8_t> NdefMessage::encode() { std::vector<uint8_t> NdefMessage::encode() {

View file

@ -31,13 +31,13 @@ class NfcTag {
NfcTag(std::vector<uint8_t> &uid, const std::string &tag_type, std::vector<uint8_t> &ndef_data) { NfcTag(std::vector<uint8_t> &uid, const std::string &tag_type, std::vector<uint8_t> &ndef_data) {
this->uid_ = uid; this->uid_ = uid;
this->tag_type_ = tag_type; this->tag_type_ = tag_type;
this->ndef_message_ = std::unique_ptr<NdefMessage>(new NdefMessage(ndef_data)); this->ndef_message_ = make_unique<NdefMessage>(ndef_data);
}; };
NfcTag(const NfcTag &rhs) { NfcTag(const NfcTag &rhs) {
uid_ = rhs.uid_; uid_ = rhs.uid_;
tag_type_ = rhs.tag_type_; tag_type_ = rhs.tag_type_;
if (rhs.ndef_message_ != nullptr) if (rhs.ndef_message_ != nullptr)
ndef_message_ = std::unique_ptr<NdefMessage>(new NdefMessage(*rhs.ndef_message_)); ndef_message_ = make_unique<NdefMessage>(*rhs.ndef_message_);
} }
std::vector<uint8_t> &get_uid() { return this->uid_; }; std::vector<uint8_t> &get_uid() { return this->uid_; };

View file

@ -1,4 +1,6 @@
#include "pn532.h" #include "pn532.h"
#include <memory>
#include "esphome/core/log.h" #include "esphome/core/log.h"
// Based on: // Based on:
@ -104,7 +106,7 @@ void PN532::loop() {
if (!success) { if (!success) {
// Something failed // Something failed
if (!this->current_uid_.empty()) { if (!this->current_uid_.empty()) {
auto tag = std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(this->current_uid_)}; auto tag = make_unique<nfc::NfcTag>(this->current_uid_);
for (auto *trigger : this->triggers_ontagremoved_) for (auto *trigger : this->triggers_ontagremoved_)
trigger->process(tag); trigger->process(tag);
} }
@ -117,7 +119,7 @@ void PN532::loop() {
if (num_targets != 1) { if (num_targets != 1) {
// no tags found or too many // no tags found or too many
if (!this->current_uid_.empty()) { if (!this->current_uid_.empty()) {
auto tag = std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(this->current_uid_)}; auto tag = make_unique<nfc::NfcTag>(this->current_uid_);
for (auto *trigger : this->triggers_ontagremoved_) for (auto *trigger : this->triggers_ontagremoved_)
trigger->process(tag); trigger->process(tag);
} }
@ -281,9 +283,9 @@ std::unique_ptr<nfc::NfcTag> PN532::read_tag_(std::vector<uint8_t> &uid) {
return this->read_mifare_ultralight_tag_(uid); return this->read_mifare_ultralight_tag_(uid);
} else if (type == nfc::TAG_TYPE_UNKNOWN) { } else if (type == nfc::TAG_TYPE_UNKNOWN) {
ESP_LOGV(TAG, "Cannot determine tag type"); ESP_LOGV(TAG, "Cannot determine tag type");
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid)}; return make_unique<nfc::NfcTag>(uid);
} else { } else {
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid)}; return make_unique<nfc::NfcTag>(uid);
} }
} }

View file

@ -1,3 +1,5 @@
#include <memory>
#include "pn532.h" #include "pn532.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
@ -15,15 +17,15 @@ std::unique_ptr<nfc::NfcTag> PN532::read_mifare_classic_tag_(std::vector<uint8_t
std::vector<uint8_t> data; std::vector<uint8_t> data;
if (this->read_mifare_classic_block_(current_block, data)) { if (this->read_mifare_classic_block_(current_block, data)) {
if (!nfc::decode_mifare_classic_tlv(data, message_length, message_start_index)) { if (!nfc::decode_mifare_classic_tlv(data, message_length, message_start_index)) {
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::ERROR)}; return make_unique<nfc::NfcTag>(uid, nfc::ERROR);
} }
} else { } else {
ESP_LOGE(TAG, "Failed to read block %d", current_block); ESP_LOGE(TAG, "Failed to read block %d", current_block);
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::MIFARE_CLASSIC)}; return make_unique<nfc::NfcTag>(uid, nfc::MIFARE_CLASSIC);
} }
} else { } else {
ESP_LOGV(TAG, "Tag is not NDEF formatted"); ESP_LOGV(TAG, "Tag is not NDEF formatted");
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::MIFARE_CLASSIC)}; return make_unique<nfc::NfcTag>(uid, nfc::MIFARE_CLASSIC);
} }
uint32_t index = 0; uint32_t index = 0;
@ -51,7 +53,7 @@ std::unique_ptr<nfc::NfcTag> PN532::read_mifare_classic_tag_(std::vector<uint8_t
} }
} }
buffer.erase(buffer.begin(), buffer.begin() + message_start_index); buffer.erase(buffer.begin(), buffer.begin() + message_start_index);
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::MIFARE_CLASSIC, buffer)}; return make_unique<nfc::NfcTag>(uid, nfc::MIFARE_CLASSIC, buffer);
} }
bool PN532::read_mifare_classic_block_(uint8_t block_num, std::vector<uint8_t> &data) { bool PN532::read_mifare_classic_block_(uint8_t block_num, std::vector<uint8_t> &data) {

View file

@ -1,3 +1,5 @@
#include <memory>
#include "pn532.h" #include "pn532.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
@ -9,25 +11,25 @@ static const char *const TAG = "pn532.mifare_ultralight";
std::unique_ptr<nfc::NfcTag> PN532::read_mifare_ultralight_tag_(std::vector<uint8_t> &uid) { std::unique_ptr<nfc::NfcTag> PN532::read_mifare_ultralight_tag_(std::vector<uint8_t> &uid) {
if (!this->is_mifare_ultralight_formatted_()) { if (!this->is_mifare_ultralight_formatted_()) {
ESP_LOGD(TAG, "Not NDEF formatted"); ESP_LOGD(TAG, "Not NDEF formatted");
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::NFC_FORUM_TYPE_2)}; return make_unique<nfc::NfcTag>(uid, nfc::NFC_FORUM_TYPE_2);
} }
uint8_t message_length; uint8_t message_length;
uint8_t message_start_index; uint8_t message_start_index;
if (!this->find_mifare_ultralight_ndef_(message_length, message_start_index)) { if (!this->find_mifare_ultralight_ndef_(message_length, message_start_index)) {
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::NFC_FORUM_TYPE_2)}; return make_unique<nfc::NfcTag>(uid, nfc::NFC_FORUM_TYPE_2);
} }
ESP_LOGVV(TAG, "message length: %d, start: %d", message_length, message_start_index); ESP_LOGVV(TAG, "message length: %d, start: %d", message_length, message_start_index);
if (message_length == 0) { if (message_length == 0) {
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::NFC_FORUM_TYPE_2)}; return make_unique<nfc::NfcTag>(uid, nfc::NFC_FORUM_TYPE_2);
} }
std::vector<uint8_t> data; std::vector<uint8_t> data;
for (uint8_t page = nfc::MIFARE_ULTRALIGHT_DATA_START_PAGE; page < nfc::MIFARE_ULTRALIGHT_MAX_PAGE; page++) { for (uint8_t page = nfc::MIFARE_ULTRALIGHT_DATA_START_PAGE; page < nfc::MIFARE_ULTRALIGHT_MAX_PAGE; page++) {
std::vector<uint8_t> page_data; std::vector<uint8_t> page_data;
if (!this->read_mifare_ultralight_page_(page, page_data)) { if (!this->read_mifare_ultralight_page_(page, page_data)) {
ESP_LOGE(TAG, "Error reading page %d", page); ESP_LOGE(TAG, "Error reading page %d", page);
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::NFC_FORUM_TYPE_2)}; return make_unique<nfc::NfcTag>(uid, nfc::NFC_FORUM_TYPE_2);
} }
data.insert(data.end(), page_data.begin(), page_data.end()); data.insert(data.end(), page_data.begin(), page_data.end());
@ -38,7 +40,7 @@ std::unique_ptr<nfc::NfcTag> PN532::read_mifare_ultralight_tag_(std::vector<uint
data.erase(data.begin(), data.begin() + message_start_index); data.erase(data.begin(), data.begin() + message_start_index);
data.erase(data.begin() + message_length, data.end()); data.erase(data.begin() + message_length, data.end());
return std::unique_ptr<nfc::NfcTag>{new nfc::NfcTag(uid, nfc::NFC_FORUM_TYPE_2, data)}; return make_unique<nfc::NfcTag>(uid, nfc::NFC_FORUM_TYPE_2, data);
} }
bool PN532::read_mifare_ultralight_page_(uint8_t page_num, std::vector<uint8_t> &data) { bool PN532::read_mifare_ultralight_page_(uint8_t page_num, std::vector<uint8_t> &data) {

View file

@ -1,5 +1,6 @@
#include "socket.h" #include "socket.h"
#include "esphome/core/defines.h" #include "esphome/core/defines.h"
#include "esphome/core/helpers.h"
#ifdef USE_SOCKET_IMPL_BSD_SOCKETS #ifdef USE_SOCKET_IMPL_BSD_SOCKETS
@ -39,7 +40,7 @@ class BSDSocketImpl : public Socket {
int fd = ::accept(fd_, addr, addrlen); int fd = ::accept(fd_, addr, addrlen);
if (fd == -1) if (fd == -1)
return {}; return {};
return std::unique_ptr<BSDSocketImpl>{new BSDSocketImpl(fd)}; return make_unique<BSDSocketImpl>(fd);
} }
int bind(const struct sockaddr *addr, socklen_t addrlen) override { return ::bind(fd_, addr, addrlen); } int bind(const struct sockaddr *addr, socklen_t addrlen) override { return ::bind(fd_, addr, addrlen); }
int close() override { int close() override {

View file

@ -88,10 +88,15 @@ template<typename T> T clamp(T val, T min, T max);
*/ */
float lerp(float completion, float start, float end); float lerp(float completion, float start, float end);
/// std::make_unique // Not all platforms we support target C++14 yet, so we can't unconditionally use std::make_unique. Provide our own
// implementation if needed, and otherwise pull std::make_unique into scope so that we have a uniform API.
#if __cplusplus >= 201402L
using std::make_unique;
#else
template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args &&...args) { template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args &&...args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
} }
#endif
/// Return a random 32 bit unsigned integer. /// Return a random 32 bit unsigned integer.
uint32_t random_uint32(); uint32_t random_uint32();