/*!\file * \brief \todo Описание файла. */ /* * AppCreate.h * * Created on: 24 июн. 2019 г. * Author: titov */ #ifndef SOURCE_APPLICATION_SOFTWARE_APPCREATE_H_ #define SOURCE_APPLICATION_SOFTWARE_APPCREATE_H_ #include "AppId.hh" #include "ApplicationConfigurator.hh" #include "../../application/ISetupStep.hh" #include #include #include #include "../../memories/memories.hh" namespace configuration { namespace software { template struct AppCreate { typedef Inititializer Type; static application::ISetupStep * build( std::pmr::memory_resource& mr, std::pair links, std::pair setting, std::pair process_parameters ); }; template struct AppCreate { typedef Inititializer Type; static application::ISetupStep * build( std::pmr::memory_resource& mr, std::pair links, std::pair setting, std::pair process_parameters ); }; template struct AppCreate { typedef Inititializer Type; static application::ISetupStep * build( std::pmr::memory_resource& mr, std::pair links, std::pair setting, std::pair process_parameters ); }; template struct AppCreate { typedef Inititializer Type; static application::ISetupStep * build( std::pmr::memory_resource& mr, std::pair links, std::pair setting, std::pair process_parameters ); }; }} template inline application::ISetupStep * configuration::software::AppCreate::build( std::pmr::memory_resource& mr, std::pair links_buff, std::pair setting_buff, std::pair process_parameters) { typedef typename Inititializer::Links Links; typedef ProcessParameters ProcParams; if( sizeof(Links) != links_buff.second ) return nullptr; if( sizeof(Setting) != setting_buff.second ) return nullptr; if( sizeof(ProcParams) != process_parameters.second ) return nullptr; Links * links = memories::instance_object( mr ); std::memcpy( links, links_buff.first, links_buff.second ); Setting * setting = memories::instance_object( mr ); std::memcpy( setting, setting_buff.first, setting_buff.second ); ProcParams * proc_params = memories::instance_object( mr ); std::memcpy( proc_params, process_parameters.first, process_parameters.second ); return memories::instance_object( mr, *links, *setting, *proc_params ); } template inline application::ISetupStep * configuration::software::AppCreate::build( std::pmr::memory_resource& mr, std::pair links_buff, std::pair setting_buff, std::pair process_parameters) { typedef typename Inititializer::Links Links; if( sizeof(Links) != links_buff.second ) return nullptr; if( sizeof(Setting) != setting_buff.second ) return nullptr; if( process_parameters.second ) return nullptr; Links * links = memories::instance_object( mr ); std::memcpy( links, links_buff.first, links_buff.second ); Setting * setting = memories::instance_object( mr ); std::memcpy( setting, setting_buff.first, setting_buff.second ); return memories::instance_object( mr, *links, *setting ); } template inline application::ISetupStep * configuration::software::AppCreate::build( std::pmr::memory_resource& mr, std::pair links_buff, std::pair setting_buff, std::pair process_parameters) { typedef typename Inititializer::Links Links; typedef ProcessParameters ProcParams; if( sizeof(Links) != links_buff.second ) return nullptr; if( setting_buff.second ) return nullptr; if( sizeof(ProcParams) != process_parameters.second ) return nullptr; Links * links = memories::instance_object( mr ); std::memcpy( links, links_buff.first, links_buff.second ); ProcParams * proc_params = memories::instance_object( mr ); std::memcpy( proc_params, process_parameters.first, process_parameters.second ); return memories::instance_object( mr, *links, *proc_params ); } template inline application::ISetupStep * configuration::software::AppCreate::build( std::pmr::memory_resource& mr, std::pair links_buff, std::pair setting_buff, std::pair process_parameters ) { typedef typename Inititializer::Links Links; if( sizeof(Links) != links_buff.second ) return nullptr; if( setting_buff.second ) return nullptr; if( process_parameters.second ) return nullptr; Links * links = memories::instance_object( mr ); std::memcpy( links, links_buff.first, links_buff.second ); return memories::instance_object( mr, *links ); } #endif /* SOURCE_APPLICATION_SOFTWARE_APPCREATE_H_ */