ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
esphome::SmallInlineBuffer< InlineSize > Class Template Reference

Small buffer optimization - stores data inline when small, heap-allocates for large data This avoids heap fragmentation for common small allocations while supporting arbitrary sizes. More...

#include <helpers.h>

Public Member Functions

 SmallInlineBuffer ()=default
 
 ~SmallInlineBuffer ()
 
 SmallInlineBuffer (SmallInlineBuffer &&other) noexcept
 
SmallInlineBufferoperator= (SmallInlineBuffer &&other) noexcept
 
 SmallInlineBuffer (const SmallInlineBuffer &)=delete
 
SmallInlineBufferoperator= (const SmallInlineBuffer &)=delete
 
void set (const uint8_t *src, size_t size)
 Set buffer contents, allocating heap if needed.
 
uint8_t * data ()
 
const uint8_t * data () const
 
size_t size () const
 

Protected Member Functions

bool is_inline_ () const
 

Protected Attributes

size_t len_ {0}
 
union { 
 
   uint8_t   inline_ [InlineSize] {} 
 
   uint8_t *   heap_ 
 
};  
 

Detailed Description

template<size_t InlineSize = 8>
class esphome::SmallInlineBuffer< InlineSize >

Small buffer optimization - stores data inline when small, heap-allocates for large data This avoids heap fragmentation for common small allocations while supporting arbitrary sizes.

Memory management is encapsulated - callers just use set() and data().

Definition at line 139 of file helpers.h.

Constructor & Destructor Documentation

◆ SmallInlineBuffer() [1/3]

template<size_t InlineSize = 8>
esphome::SmallInlineBuffer< InlineSize >::SmallInlineBuffer ( )
default

◆ ~SmallInlineBuffer()

template<size_t InlineSize = 8>
esphome::SmallInlineBuffer< InlineSize >::~SmallInlineBuffer ( )
inline

Definition at line 142 of file helpers.h.

◆ SmallInlineBuffer() [2/3]

template<size_t InlineSize = 8>
esphome::SmallInlineBuffer< InlineSize >::SmallInlineBuffer ( SmallInlineBuffer< InlineSize > && other)
inlinenoexcept

Definition at line 148 of file helpers.h.

◆ SmallInlineBuffer() [3/3]

template<size_t InlineSize = 8>
esphome::SmallInlineBuffer< InlineSize >::SmallInlineBuffer ( const SmallInlineBuffer< InlineSize > & )
delete

Member Function Documentation

◆ data() [1/2]

template<size_t InlineSize = 8>
uint8_t * esphome::SmallInlineBuffer< InlineSize >::data ( )
inline

Definition at line 194 of file helpers.h.

◆ data() [2/2]

template<size_t InlineSize = 8>
const uint8_t * esphome::SmallInlineBuffer< InlineSize >::data ( ) const
inline

Definition at line 195 of file helpers.h.

◆ is_inline_()

template<size_t InlineSize = 8>
bool esphome::SmallInlineBuffer< InlineSize >::is_inline_ ( ) const
inlineprotected

Definition at line 199 of file helpers.h.

◆ operator=() [1/2]

template<size_t InlineSize = 8>
SmallInlineBuffer & esphome::SmallInlineBuffer< InlineSize >::operator= ( const SmallInlineBuffer< InlineSize > & )
delete

◆ operator=() [2/2]

template<size_t InlineSize = 8>
SmallInlineBuffer & esphome::SmallInlineBuffer< InlineSize >::operator= ( SmallInlineBuffer< InlineSize > && other)
inlinenoexcept

Definition at line 159 of file helpers.h.

◆ set()

template<size_t InlineSize = 8>
void esphome::SmallInlineBuffer< InlineSize >::set ( const uint8_t * src,
size_t size )
inline

Set buffer contents, allocating heap if needed.

Definition at line 180 of file helpers.h.

◆ size()

template<size_t InlineSize = 8>
size_t esphome::SmallInlineBuffer< InlineSize >::size ( ) const
inline

Definition at line 196 of file helpers.h.

Field Documentation

◆ [union]

union { ... } esphome::SmallInlineBuffer< InlineSize >

◆ heap_

template<size_t InlineSize = 8>
uint8_t* esphome::SmallInlineBuffer< InlineSize >::heap_

Definition at line 204 of file helpers.h.

◆ inline_

template<size_t InlineSize = 8>
uint8_t esphome::SmallInlineBuffer< InlineSize >::inline_[InlineSize] {}

Definition at line 203 of file helpers.h.

◆ len_

template<size_t InlineSize = 8>
size_t esphome::SmallInlineBuffer< InlineSize >::len_ {0}
protected

Definition at line 201 of file helpers.h.


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