MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/systemic/CustomParameters.cpp

87 lines
2.4 KiB
C++

/*
* CustomParameters.cpp
*
* Created on: 20 ìàÿ 2019 ã.
* Author: titov
*/
#include "CustomParameters.hpp"
systemic::CustomParameters::CustomParameters(
IParameterProvider * * providers, std::size_t size) :
providers(providers), size(size) {}
bool systemic::CustomParameters::addProvider( IParameterProvider * provider,
ProviderId provider_id ) {
bool result = false;
if( provider_id < size and not providers[provider_id] )
result = ( providers[provider_id] = provider );
return result;
}
bool systemic::CustomParameters::flushString(
ProviderId provider_id, Id parameter_id,
std::pair<const peripheral::protected_char *, std::size_t> string ) {
bool result = false;
if( provider_id < size and providers[provider_id] ) {
if( providers[provider_id]->getParameterBuff(parameter_id).get().first == string.first )
result = providers[provider_id]->flushParameterBuff(parameter_id);
}
return result;
}
systemic::SharedData systemic::CustomParameters::getString( ProviderId provider_id, Id parameter_id) const {
systemic::SharedData result;
if( provider_id < size and providers[provider_id] )
result = providers[provider_id]->getParameterBuff(parameter_id);
return result;
}
systemic::SharedData systemic::CustomParameters::createString( ProviderId provider_id, Id parameter_id, std::size_t size ) {
systemic::SharedData result;
if( provider_id < CustomParameters::size and providers[provider_id] ){
result = providers[provider_id]->createParameterBuff(parameter_id, size);
}
return result;
}
bool systemic::getStringView( SharedData & string,
const CustomParameters & cparams,
CustomParameters::ProviderId provider_id,
CustomParameters::Id id ) {
if( not string.get().first )
string = cparams.getString( provider_id, id );
return string.get().first;
}
bool systemic::createStringView( SharedData & string,
CustomParameters & cparams,
CustomParameters::ProviderId provider_id,
std::size_t size,
CustomParameters::Id id ) {
if( not string.get().first )
string = cparams.createString( provider_id, id, size );
return string.get().first;
}