58 lines
1.8 KiB
C++
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() );
|
||
}
|
||
|
||
}
|
||
|