|
ESPHome 2025.12.0-dev
|
Lightweight wrapper for template platform lambdas (stateless function pointers only). More...
#include <template_lambda.h>
Public Member Functions | |
| TemplateLambda () | |
| void | set (optional< T >(*f)(Args...)) |
| Set the lambda function pointer. | |
| bool | has_value () const |
| Check if a lambda is set. | |
| optional< T > | operator() (Args &&...args) |
| Call the lambda, returning nullopt if no lambda is set. | |
| optional< T > | call (Args &&...args) |
| Alias for operator() for compatibility. | |
Protected Attributes | |
| optional< T >(* | f_ )(Args...) |
Lightweight wrapper for template platform lambdas (stateless function pointers only).
This optimizes template platforms by storing only a function pointer (4 bytes on ESP32) instead of std::function (16-32 bytes).
IMPORTANT: This only supports stateless lambdas (no captures). The set_template() method is an internal API used by YAML codegen, not intended for external use.
Lambdas must return optional<T> to support the pattern: return {}; // Don't publish a value return 42.0; // Publish this value
operator() returns optional<T>, returning nullopt when no lambda is set (nullptr check).
| T | The return type (e.g., float for sensor values) |
| Args | Optional arguments for the lambda |
Definition at line 24 of file template_lambda.h.
|
inline |
Definition at line 26 of file template_lambda.h.
|
inline |
Alias for operator() for compatibility.
Definition at line 45 of file template_lambda.h.
|
inline |
Check if a lambda is set.
Definition at line 35 of file template_lambda.h.
|
inline |
Call the lambda, returning nullopt if no lambda is set.
Definition at line 38 of file template_lambda.h.
|
inline |
Set the lambda function pointer.
INTERNAL API: Only for use by YAML codegen. Only stateless lambdas (no captures) are supported.
Definition at line 32 of file template_lambda.h.
|
protected |
Definition at line 45 of file template_lambda.h.