mirror of
https://github.com/esphome/esphome.git
synced 2025-10-25 13:13:48 +01:00
[sensor,text_sensor,binary_sensor] Optimize filter parameters with std::initializer_list (#11426)
This commit is contained in:
@@ -51,7 +51,7 @@ void BinarySensor::add_filter(Filter *filter) {
|
|||||||
last_filter->next_ = filter;
|
last_filter->next_ = filter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void BinarySensor::add_filters(const std::vector<Filter *> &filters) {
|
void BinarySensor::add_filters(std::initializer_list<Filter *> filters) {
|
||||||
for (Filter *filter : filters) {
|
for (Filter *filter : filters) {
|
||||||
this->add_filter(filter);
|
this->add_filter(filter);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
#include "esphome/components/binary_sensor/filter.h"
|
#include "esphome/components/binary_sensor/filter.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <initializer_list>
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ class BinarySensor : public StatefulEntityBase<bool>, public EntityBase_DeviceCl
|
|||||||
void publish_initial_state(bool new_state);
|
void publish_initial_state(bool new_state);
|
||||||
|
|
||||||
void add_filter(Filter *filter);
|
void add_filter(Filter *filter);
|
||||||
void add_filters(const std::vector<Filter *> &filters);
|
void add_filters(std::initializer_list<Filter *> filters);
|
||||||
|
|
||||||
// ========== INTERNAL METHODS ==========
|
// ========== INTERNAL METHODS ==========
|
||||||
// (In most use cases you won't need these)
|
// (In most use cases you won't need these)
|
||||||
|
|||||||
@@ -107,12 +107,12 @@ void Sensor::add_filter(Filter *filter) {
|
|||||||
}
|
}
|
||||||
filter->initialize(this, nullptr);
|
filter->initialize(this, nullptr);
|
||||||
}
|
}
|
||||||
void Sensor::add_filters(const std::vector<Filter *> &filters) {
|
void Sensor::add_filters(std::initializer_list<Filter *> filters) {
|
||||||
for (Filter *filter : filters) {
|
for (Filter *filter : filters) {
|
||||||
this->add_filter(filter);
|
this->add_filter(filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Sensor::set_filters(const std::vector<Filter *> &filters) {
|
void Sensor::set_filters(std::initializer_list<Filter *> filters) {
|
||||||
this->clear_filters();
|
this->clear_filters();
|
||||||
this->add_filters(filters);
|
this->add_filters(filters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#include "esphome/core/log.h"
|
#include "esphome/core/log.h"
|
||||||
#include "esphome/components/sensor/filter.h"
|
#include "esphome/components/sensor/filter.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <initializer_list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
@@ -77,10 +77,10 @@ class Sensor : public EntityBase, public EntityBase_DeviceClass, public EntityBa
|
|||||||
* SlidingWindowMovingAverageFilter(15, 15), // average over last 15 values
|
* SlidingWindowMovingAverageFilter(15, 15), // average over last 15 values
|
||||||
* });
|
* });
|
||||||
*/
|
*/
|
||||||
void add_filters(const std::vector<Filter *> &filters);
|
void add_filters(std::initializer_list<Filter *> filters);
|
||||||
|
|
||||||
/// Clear the filters and replace them by filters.
|
/// Clear the filters and replace them by filters.
|
||||||
void set_filters(const std::vector<Filter *> &filters);
|
void set_filters(std::initializer_list<Filter *> filters);
|
||||||
|
|
||||||
/// Clear the entire filter chain.
|
/// Clear the entire filter chain.
|
||||||
void clear_filters();
|
void clear_filters();
|
||||||
|
|||||||
@@ -51,12 +51,12 @@ void TextSensor::add_filter(Filter *filter) {
|
|||||||
}
|
}
|
||||||
filter->initialize(this, nullptr);
|
filter->initialize(this, nullptr);
|
||||||
}
|
}
|
||||||
void TextSensor::add_filters(const std::vector<Filter *> &filters) {
|
void TextSensor::add_filters(std::initializer_list<Filter *> filters) {
|
||||||
for (Filter *filter : filters) {
|
for (Filter *filter : filters) {
|
||||||
this->add_filter(filter);
|
this->add_filter(filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void TextSensor::set_filters(const std::vector<Filter *> &filters) {
|
void TextSensor::set_filters(std::initializer_list<Filter *> filters) {
|
||||||
this->clear_filters();
|
this->clear_filters();
|
||||||
this->add_filters(filters);
|
this->add_filters(filters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
#include "esphome/components/text_sensor/filter.h"
|
#include "esphome/components/text_sensor/filter.h"
|
||||||
|
|
||||||
#include <vector>
|
#include <initializer_list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
@@ -37,10 +37,10 @@ class TextSensor : public EntityBase, public EntityBase_DeviceClass {
|
|||||||
void add_filter(Filter *filter);
|
void add_filter(Filter *filter);
|
||||||
|
|
||||||
/// Add a list of vectors to the back of the filter chain.
|
/// Add a list of vectors to the back of the filter chain.
|
||||||
void add_filters(const std::vector<Filter *> &filters);
|
void add_filters(std::initializer_list<Filter *> filters);
|
||||||
|
|
||||||
/// Clear the filters and replace them by filters.
|
/// Clear the filters and replace them by filters.
|
||||||
void set_filters(const std::vector<Filter *> &filters);
|
void set_filters(std::initializer_list<Filter *> filters);
|
||||||
|
|
||||||
/// Clear the entire filter chain.
|
/// Clear the entire filter chain.
|
||||||
void clear_filters();
|
void clear_filters();
|
||||||
|
|||||||
Reference in New Issue
Block a user