From 07eeac8bebebb14563bd699e20dc268490f20045 Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Sun, 5 Oct 2025 11:35:55 +0200 Subject: [PATCH] add support for using lambdas with captures as factory_builder functions --- library.json | 2 +- src/esp.h | 3 +-- src/ha.h | 5 +++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/library.json b/library.json index c170cb0..0a4a586 100644 --- a/library.json +++ b/library.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/schema/library.json", "name": "ha-mqtt", - "version": "1.12.0", + "version": "1.13.0", "description": "Home Assistant classes for integration with MQTT auto discovery", "repository": { "type": "git", diff --git a/src/esp.h b/src/esp.h index 976785f..4753eca 100644 --- a/src/esp.h +++ b/src/esp.h @@ -42,8 +42,7 @@ namespace HaESP { template Builder& heapStats(Builder& builder) { - auto heap = new Sensor{ "Heap fragmentation", "heap_fragmentation" }; - builder.addDiagnostic(Builder::instance(heap) + builder.addDiagnostic(Builder::instance(new Sensor{ "Heap fragmentation", "heap_fragmentation" }) .withUnitMeasure("%") .withPrecision(0) .withValueTemplate("{{ value_json.fragmentation }}") diff --git a/src/ha.h b/src/ha.h index c07fa31..770fdbf 100644 --- a/src/ha.h +++ b/src/ha.h @@ -401,6 +401,7 @@ namespace Ha { template struct Builder : AbstractBuilder { + using factory_builder = std::function; T* cmp; Builder(T* cmp) : AbstractBuilder(), cmp(cmp) {} @@ -496,6 +497,10 @@ namespace Ha { return factoryBuilder(*this); } + Builder& addPreconfigured(factory_builder factoryBuilder) { + return factoryBuilder(*this); + } + Builder& addConfiguration(Component* c) { c->entityCategory = "config"; return addSecondary(c);