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

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

#include <sensesp/transforms/zip.h>

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

Public Member Functions

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

Protected Member Functions

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

Protected Attributes

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

Detailed Description

template<typename T1, typename T2>
class sensesp::Zip< T1, T2 >

Zip two 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. All producers must emit a new value before the next tuple is emitted.

Definition at line 57 of file zip.h.

Constructor & Destructor Documentation

◆ Zip()

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

Definition at line 59 of file zip.h.

Member Function Documentation

◆ emit_tuple()

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

Implements sensesp::ZipBase< 2 >.

Definition at line 78 of file zip.h.

Here is the call graph for this function:

Member Data Documentation

◆ consumers

template<typename T1 , typename T2 >
std::tuple<LambdaConsumer<T1>, LambdaConsumer<T2> > sensesp::Zip< T1, T2 >::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;
})}
Provides an easy way of calling a function based on the output of any ValueProducer.
virtual void check_emit()
Definition zip.h:34
bool fresh_[N]
Definition zip.h:29
elapsedMillis age_[N]
Definition zip.h:28
std::tuple< T1, T2 > values
Definition zip.h:76

Definition at line 61 of file zip.h.

◆ values

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

Definition at line 76 of file zip.h.


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