MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/basic/ParamCompareInitializer.cpp

58 lines
1.8 KiB
C++

/*
* ParamCompareInitializer.cpp
*
* Created on: 23 ÿíâ. 2022 ã.
* Author: sozonov
*/
#include "ParamCompare.hh"
#include "../../systemic/MemberFuntion.hpp"
#include "../../systemic/CustomParameters.hpp"
#include "../../systemic/CompareParams.hh"
#include <cstring>
application::basic::ParamCompare::ParamCompare( const Links & links ) :
links(links){}
bool application::basic::ParamCompare::input( Environment & env ) {
return systemic::getStringView( platform_string_1,
env.cparams,
const_prov,
links.first_param ) and
systemic::getStringView( platform_string_2,
env.cparams,
const_prov,
links.second_param );
}
void application::basic::ParamCompare::build( Environment & env ) {
if(links.equal) {
std::pair<char *, std::size_t> setting_data_first = platform_string_1.get();
std::pair<char *, std::size_t> setting_data_second = platform_string_2.get();
typedef systemic::CompareParams CompareParams;
CompareParams * compare_params = memories::instance_object<CompareParams>( env.static_data_ma,
setting_data_first,
setting_data_second );
if(links.compare) {
typedef systemic::detail::MemberFuntion< CompareParams, void, &CompareParams::compare> CompareAction;
CompareAction * compare_action = memories::instance_object<CompareAction>( env.static_setup_ma, *compare_params );
env.rholder.share<Action>( *compare_action, links.compare );
}
env.statuses.create(links.equal, compare_params->state() );
}
}