ESPHome 2025.12.0-dev
Loading...
Searching...
No Matches
esphome::display::DisplayWriter< T > Class Template Reference

Optimized display writer that uses function pointers for stateless lambdas. More...

#include <display.h>

Public Member Functions

 DisplayWriter ()
 
template<typename F >
requires std::invocable<F, T &> && std::convertible_to<F, void (*)(T &)>
 DisplayWriter (F f)
 
template<typename F >
requires std::invocable<F, T &> &&(!std::convertible_to<F, void (*)(T &)>)
 DisplayWriter (F f)
 
 DisplayWriter (const DisplayWriter &other)
 
 DisplayWriter (DisplayWriter &&other) noexcept
 
DisplayWriteroperator= (const DisplayWriter &other)
 
DisplayWriteroperator= (DisplayWriter &&other) noexcept
 
 ~DisplayWriter ()
 
bool has_value () const
 
void call (T &display) const
 
void operator() (T &display) const
 
DisplayWriteroperator* ()
 
const DisplayWriteroperator* () const
 

Protected Types

enum  : uint8_t { NONE , LAMBDA , STATELESS_LAMBDA }
 

Protected Attributes

enum esphome::display::DisplayWriter:: { ... }  type_
 
union { 
 
   std::function< void(T &)> *   f_ 
 
   void(*   stateless_f_ )(T &) 
 
};  
 

Detailed Description

template<typename T>
class esphome::display::DisplayWriter< T >

Optimized display writer that uses function pointers for stateless lambdas.

Similar to TemplatableValue but specialized for display writer callbacks. Saves ~8 bytes per stateless lambda on 32-bit platforms (16 bytes std::function → ~8 bytes discriminator+pointer).

Supports both:

  • Stateless lambdas (from YAML) → function pointer (4 bytes)
  • Stateful lambdas/std::function (from C++ code) → std::function* (heap allocated)
Template Parameters
TThe display type (e.g., Display, Nextion, GPIOLCDDisplay)

Definition at line 190 of file display.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename T >
anonymous enum : uint8_t
protected
Enumerator
NONE 
LAMBDA 
STATELESS_LAMBDA 

Definition at line 276 of file display.h.

Constructor & Destructor Documentation

◆ DisplayWriter() [1/5]

template<typename T >
esphome::display::DisplayWriter< T >::DisplayWriter ( )
inline

Definition at line 192 of file display.h.

◆ DisplayWriter() [2/5]

template<typename T >
template<typename F >
requires std::invocable<F, T &> && std::convertible_to<F, void (*)(T &)>
esphome::display::DisplayWriter< T >::DisplayWriter ( F f)
inline

Definition at line 196 of file display.h.

◆ DisplayWriter() [3/5]

template<typename T >
template<typename F >
requires std::invocable<F, T &> &&(!std::convertible_to<F, void (*)(T &)>)
esphome::display::DisplayWriter< T >::DisplayWriter ( F f)
inline

Definition at line 204 of file display.h.

◆ DisplayWriter() [4/5]

template<typename T >
esphome::display::DisplayWriter< T >::DisplayWriter ( const DisplayWriter< T > & other)
inline

Definition at line 209 of file display.h.

◆ DisplayWriter() [5/5]

template<typename T >
esphome::display::DisplayWriter< T >::DisplayWriter ( DisplayWriter< T > && other)
inlinenoexcept

Definition at line 218 of file display.h.

◆ ~DisplayWriter()

template<typename T >
esphome::display::DisplayWriter< T >::~DisplayWriter ( )
inline

Definition at line 245 of file display.h.

Member Function Documentation

◆ call()

template<typename T >
void esphome::display::DisplayWriter< T >::call ( T & display) const
inline

Definition at line 254 of file display.h.

◆ has_value()

template<typename T >
bool esphome::display::DisplayWriter< T >::has_value ( ) const
inline

Definition at line 252 of file display.h.

◆ operator()()

template<typename T >
void esphome::display::DisplayWriter< T >::operator() ( T & display) const
inline

Definition at line 269 of file display.h.

◆ operator*() [1/2]

template<typename T >
DisplayWriter & esphome::display::DisplayWriter< T >::operator* ( )
inline

Definition at line 272 of file display.h.

◆ operator*() [2/2]

template<typename T >
const DisplayWriter & esphome::display::DisplayWriter< T >::operator* ( ) const
inline

Definition at line 273 of file display.h.

◆ operator=() [1/2]

template<typename T >
DisplayWriter & esphome::display::DisplayWriter< T >::operator= ( const DisplayWriter< T > & other)
inline

Definition at line 229 of file display.h.

◆ operator=() [2/2]

template<typename T >
DisplayWriter & esphome::display::DisplayWriter< T >::operator= ( DisplayWriter< T > && other)
inlinenoexcept

Definition at line 237 of file display.h.

Field Documentation

◆ [union]

union { ... } esphome::display::DisplayWriter< T >

◆ f_

template<typename T >
std::function<void(T &)>* esphome::display::DisplayWriter< T >::f_

Definition at line 283 of file display.h.

◆ stateless_f_

template<typename T >
void(* esphome::display::DisplayWriter< T >::stateless_f_) (T &)

Definition at line 284 of file display.h.

◆ []

enum { ... } esphome::display::DisplayWriter< T >::type_

The documentation for this class was generated from the following file: