SensESP 3.0.0-beta.6
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
sensesp::Zip4< T1, T2, T3, T4 > Class Template Reference

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

#include <sensesp/transforms/zip.h>

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

Public Member Functions

 Zip4 (long max_age=0)
 
- Public Member Functions inherited from sensesp::ZipBase< 4 >
 ZipBase (long max_age=0)
 
- Public Member Functions inherited from sensesp::ValueProducer< std::tuple< T1, T2, T3, T4 > >
 ValueProducer ()
 
 ValueProducer (const std::tuple< T1, T2, T3, T4 > &initial_value)
 
virtual const std::tuple< T1, T2, T3, T4 > & get () const
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< std::tuple< T1, T2, T3, T4 >, 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, T4 >, 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, T4 >, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer &consumer)
 
void emit (const std::tuple< T1, T2, T3, T4 > &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 >, LambdaConsumer< T4 > > consumers
 

Protected Member Functions

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

Protected Attributes

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

Detailed Description

template<typename T1, typename T2, typename T3, typename T4>
class sensesp::Zip4< T1, T2, T3, T4 >

Zip four 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 127 of file zip.h.

Constructor & Destructor Documentation

◆ Zip4()

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

Definition at line 130 of file zip.h.

Member Function Documentation

◆ emit_tuple()

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

Implements sensesp::ZipBase< 4 >.

Definition at line 162 of file zip.h.

Here is the call graph for this function:

Member Data Documentation

◆ consumers

template<typename T1 , typename T2 , typename T3 , typename T4 >
std::tuple<LambdaConsumer<T1>, LambdaConsumer<T2>, LambdaConsumer<T3>, LambdaConsumer<T4> > sensesp::Zip4< T1, T2, T3, T4 >::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;
}),
LambdaConsumer<T4>([this](T4 value) {
std::get<3>(values) = value;
age_[3] = 0;
fresh_[3] = true;
})}
Provides an easy way of calling a function based on the output of any ValueProducer.
std::tuple< T1, T2, T3, T4 > values
Definition zip.h:160
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 134 of file zip.h.

◆ values

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

Definition at line 160 of file zip.h.


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