#pragma once #include #include #include #include namespace fc { namespace raw { template void unpack_file( const fc::path& filename, T& obj ) { try { fc::file_mapping fmap( filename.generic_string().c_str(), fc::read_only); fc::mapped_region mapr( fmap, fc::read_only, 0, fc::file_size(filename) ); auto cs = (const char*)mapr.get_address(); fc::datastream ds( cs, mapr.get_size() ); fc::raw::unpack(ds,obj); } FC_RETHROW_EXCEPTIONS( info, "unpacking file ${file}", ("file",filename) ); } } }