SensESP 3.0.1
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
sensesp::Zip3< T1, T2, T3 > Class Template Reference

Zip three producer values into a tuple. More...

#include <sensesp/transforms/zip.h>

Inheritance diagram for sensesp::Zip3< T1, T2, T3 >:
[legend]

Public Member Functions

 Zip3 (long max_age=0)
 
- Public Member Functions inherited from sensesp::ZipBase< 3 >
 ZipBase (long max_age=0)
 
- Public Member Functions inherited from sensesp::ValueProducer< std::tuple< T1, T2, T3 > >
 ValueProducer ()
 
 ValueProducer (const std::tuple< T1, T2, T3 > &initial_value)
 
virtual const std::tuple< T1, T2, T3 > & get () const
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< std::tuple< T1, T2, T3 >, typenameVConsumer::input_type >::value, std::shared_ptr< VConsumer > >::type connect_to (std::shared_ptr< VConsumer > consumer)
 Connect a producer to a transform with a different input type.
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< std::tuple< T1, T2, T3 >, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer *consumer)
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< std::tuple< T1, T2, T3 >, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer &consumer)
 
void emit (const std::tuple< T1, T2, T3 > &new_value)
 
- Public Member Functions inherited from sensesp::Observable
 Observable ()
 
 Observable (Observable &&other)
 Move constructor.
 
void notify ()
 
void attach (std::function< void()> observer)
 

Public Attributes

std::tuple< LambdaConsumer< T1 >, LambdaConsumer< T2 >, LambdaConsumer< T3 > > consumers
 

Protected Member Functions

void emit_tuple () override
 
- Protected Member Functions inherited from sensesp::ZipBase< 3 >
virtual void check_emit ()
 

Protected Attributes

std::tuple< T1, T2, T3 > values
 
- Protected Attributes inherited from sensesp::ZipBase< 3 >
elapsedMillis age_ [N]
 
bool fresh_ [N]
 
long max_age_
 
- Protected Attributes inherited from sensesp::ValueProducer< std::tuple< T1, T2, T3 > >
std::tuple< T1, T2, T3 > output_
 

Detailed Description

template<typename T1, typename T2, typename T3>
class sensesp::Zip3< T1, T2, T3 >

Zip three producer values into a tuple.

Zips the connected producers' values into a tuple. The tuple is emitted once all producers have emitted a new value within max_age milliseconds.

Definition at line 89 of file zip.h.

Constructor & Destructor Documentation

◆ Zip3()

template<typename T1 , typename T2 , typename T3 >
sensesp::Zip3< T1, T2, T3 >::Zip3 ( long max_age = 0)
inline

Definition at line 91 of file zip.h.

Member Function Documentation

◆ emit_tuple()

template<typename T1 , typename T2 , typename T3 >
void sensesp::Zip3< T1, T2, T3 >::emit_tuple ( )
inlineoverrideprotectedvirtual

Implements sensesp::ZipBase< 3 >.

Definition at line 116 of file zip.h.

Here is the call graph for this function:

Member Data Documentation

◆ consumers

template<typename T1 , typename T2 , typename T3 >
std::tuple<LambdaConsumer<T1>, LambdaConsumer<T2>, LambdaConsumer<T3> > sensesp::Zip3< T1, T2, T3 >::consumers
Initial value:
= {LambdaConsumer<T1>([this](T1 value) {
std::get<0>(values) = value;
age_[0] = 0;
fresh_[0] = true;
}),
LambdaConsumer<T2>([this](T2 value) {
std::get<1>(values) = value;
age_[1] = 0;
fresh_[1] = true;
}),
LambdaConsumer<T3>([this](T3 value) {
std::get<2>(values) = value;
age_[2] = 0;
fresh_[2] = true;
})}
Provides an easy way of calling a function based on the output of any ValueProducer.
std::tuple< T1, T2, T3 > values
Definition zip.h:114
virtual void check_emit()
Definition zip.h:34
bool fresh_[N]
Definition zip.h:29
elapsedMillis age_[N]
Definition zip.h:28

Definition at line 94 of file zip.h.

◆ values

template<typename T1 , typename T2 , typename T3 >
std::tuple<T1, T2, T3> sensesp::Zip3< T1, T2, T3 >::values
protected

Definition at line 114 of file zip.h.


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