/***************************************************************************** source::worx libPiGPio Copyright © 2022 c.holzheuer chris@sourceworx.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Uses: pigpiod_if2 by joan2937, pigpio @ abyz.me.uk https://abyz.me.uk/rpi/pigpio sigslot by 2017 Pierre-Antoine Lacaze https://github.com/palacaze/sigslot ***************************************************************************/ #ifndef PIGVALUE_H #define PIGVALUE_H #include //class rangeVal template class LIBPIGPIO_EXPORT pigValue { public: sigslot::signal sigValue; pigValue() = default; pigValue( T val ) : _value( val ) { } virtual ~pigValue() = default; T value() { return _value; } void set_value( T value ) { _value = value; } void change_value( T value ) { set_value( value ); // emit ... } template< typename V > void connect_value( V& listener ) { //sigState.connect( [&](bool state) { T::change_state( state ); } ); sigValue.connect( &V::change_value, &listener ); } /* template< typename O > void add_value_observer( O* target ) { signal.connect( &O::on_value_changed, target ); } */ protected: T _value = T(); }; #endif // PIGVALUE_H