#pragma once #include #include #include #include #include #include namespace kel { namespace lbm { namespace sch { using namespace saw::schema; template using LbmConfig = Struct< Member, Member, Member >; } template saw::error_or>> load_lbm_config(std::string_view file_name){ std::ifstream file{std::string{file_name}}; if(!file.is_open()){ return saw::make_error("Couldn't open file"); } saw::data, saw::encode::Json> lbm_json_conf{saw::heap(1u)}; uint8_t ele{}; while(file.readsome(reinterpret_cast(&ele), 1u) > 0u){ auto err = lbm_json_conf.get_buffer().push(ele,1u); if(err.failed()){ return err; } } saw::data> lbm_conf; saw::codec, saw::encode::Json> json_codec; { auto eov = json_codec.decode(lbm_json_conf, lbm_conf); if(eov.is_error()){ return std::move(eov.get_error()); } } return lbm_conf; } } }