/* * 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 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; }