87 lines
2.4 KiB
C++
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;
|
||
|
||
}
|