/* * SignalMathInitializer.cpp * * Created on: 17 мар. 2023 г. * Author: titov */ #include "SignalMath.hh" bool application::schematic::SignalAbs::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ); } void application::schematic::SignalAbs::build( Environment & env ) { systemic::detail::SignalAbs * sabs = memories::instance_object( env.static_object_ma, *value_a ); env.signals.add( links.abs, sabs ); } bool application::schematic::SignalSubtraction::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) ); } void application::schematic::SignalSubtraction::build( Environment & env ) { systemic::detail::SignalSubtraction * sabs = memories::instance_object( env.static_object_ma, *value_a, *value_b ); env.signals.add( links.subtraction, sabs ); } bool application::schematic::SignalAddition::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) ); } void application::schematic::SignalAddition::build( Environment & env ) { systemic::detail::SignalAddition * sadd = memories::instance_object( env.static_object_ma, *value_a, *value_b ); env.signals.add( links.addition, sadd ); } bool application::schematic::SignalSquareRoot::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ); } void application::schematic::SignalSquareRoot::build( Environment & env ) { std::pointer_to_unary_function pf = std::ptr_fun( &std::sqrt ); systemic::detail::SignalUnaryFunction * sabs = memories::instance_object( env.static_object_ma, *value_a, pf ); env.signals.add( links.sqrt, sabs ); } bool application::schematic::SignalMultiplication::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) ); } void application::schematic::SignalMultiplication::build( Environment & env ) { systemic::detail::SignalMultiplication * sabs = memories::instance_object( env.static_object_ma, *value_a, *value_b ); env.signals.add( links.multiplication, sabs ); } bool application::schematic::SignalDivision::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) ); } void application::schematic::SignalDivision::build( Environment & env ) { systemic::detail::SignalDivision * sabs = memories::instance_object( env.static_object_ma, *value_a, *value_b ); env.signals.add( links.division, sabs ); } bool application::schematic::SignalPower::input( Environment & env ) { return ( value_a = env.signals.get( links.a ) ) and ( value_b = env.signals.get( links.b ) ); } void application::schematic::SignalPower::build( Environment & env ) { using namespace std; std::pointer_to_binary_function pointer( &powf ); systemic::detail::SignalBinaryFunction * sabs = memories::instance_object( env.static_object_ma, *value_a, *value_b, pointer ); env.signals.add( links.power, sabs ); }