114 lines
3.4 KiB
C++
114 lines
3.4 KiB
C++
/*
|
|
* 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<systemic::detail::SignalAbs>( 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<systemic::detail::SignalSubtraction>( 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<systemic::detail::SignalAddition>( 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<float, float> pf = std::ptr_fun<float, float>( &std::sqrt );
|
|
|
|
systemic::detail::SignalUnaryFunction * sabs = memories::instance_object<systemic::detail::SignalUnaryFunction>( 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<systemic::detail::SignalMultiplication>( 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<systemic::detail::SignalDivision>( 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<float, float, float> pointer( &powf );
|
|
systemic::detail::SignalBinaryFunction * sabs = memories::instance_object<systemic::detail::SignalBinaryFunction>( env.static_object_ma, *value_a, *value_b, pointer );
|
|
|
|
env.signals.add( links.power, sabs );
|
|
|
|
}
|
|
|
|
|