184 lines
5.2 KiB
C++
184 lines
5.2 KiB
C++
/*
|
||
* SignalMathSetup.hh
|
||
*
|
||
* Created on: 14 мая 2020 г.
|
||
* Author: LeonidTitov
|
||
*/
|
||
|
||
#ifndef UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
|
||
#define UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATHSETUP_HH_
|
||
|
||
#include "../ISetupStep.hh"
|
||
|
||
#include "../../schematic/SignalMath.hpp"
|
||
|
||
namespace application { namespace schematic {
|
||
|
||
//!Абсолютное значение сигнала. Реализует функцию abs = |a|.
|
||
struct SignalAbs : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a;
|
||
Environment::SignalId abs; //!<Константный сигнал.
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalAbs( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
//!Разница двух сигналов. Реализует функцию subtraction = a - b.
|
||
struct SignalSubtraction : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
systemic::ISignal * value_b = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId b; //!<Сигнал "b".
|
||
Environment::SignalId subtraction; //!<Разница двух сигналов.
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalSubtraction( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
//!Сумма двух сигналов. Реализует функцию addition = a + b.
|
||
struct SignalAddition : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
systemic::ISignal * value_b = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId b; //!<Сигнал "b".
|
||
Environment::SignalId addition; //!<Сумма двух сигналов.
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalAddition( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
//!Произведение двух сигналов. Реализует функцию multiplication = a * b.
|
||
struct SignalMultiplication : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
systemic::ISignal * value_b = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId b; //!<Сигнал "b".
|
||
Environment::SignalId multiplication; //!<Произведение двух сигналов.
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalMultiplication( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
//!Деление двух сигналов. Реализует функцию division = a / b.
|
||
struct SignalDivision : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
systemic::ISignal * value_b = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId b; //!<Сигнал "b".
|
||
Environment::SignalId division; //!<Деление двух сигналов.
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalDivision( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
//!Квадратный корень сигнала. Реализует функцию sqrt = sqrt(a).
|
||
struct SignalSquareRoot : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId sqrt; //!<Квадратный корень сигнала "а".
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalSquareRoot( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
////!Квадрат сигнала. Реализует функцию sqr = a^2.
|
||
//struct SignalSquare : public ISetupStep {
|
||
//
|
||
// systemic::ISignal * value_a = nullptr;
|
||
//
|
||
// bool input( Environment & env );
|
||
// void build( Environment & env );
|
||
//
|
||
// struct Links {
|
||
// Environment::SignalId a; //!<Сигнал "a".
|
||
// Environment::SignalId sqr; //!<Квадрат сигнала "а".
|
||
// };
|
||
//
|
||
// const Links & links;
|
||
//
|
||
// SignalSquare( const Links & links ) : links(links) {}
|
||
//
|
||
//};
|
||
|
||
//!Возведение сигнала в степень. Реализует функцию power = pow(a, b).
|
||
struct SignalPower : public ISetupStep {
|
||
|
||
systemic::ISignal * value_a = nullptr;
|
||
systemic::ISignal * value_b = nullptr;
|
||
|
||
bool input( Environment & env );
|
||
void build( Environment & env );
|
||
|
||
struct Links {
|
||
Environment::SignalId a; //!<Сигнал "a".
|
||
Environment::SignalId b; //!<Сигнал "b".
|
||
Environment::SignalId power; //!<Степень "b" сигнала "а".
|
||
};
|
||
|
||
const Links & links;
|
||
|
||
SignalPower( const Links & links ) : links(links) {}
|
||
|
||
};
|
||
|
||
}
|
||
}
|
||
|
||
|
||
#endif /* UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALMATH_HH_ */
|