Result_t Kumu::ReadFileIntoBuffer(const std::string& Filename, Kumu::ByteString& Buffer, ui32_t max_size) { ui32_t file_size = FileSize(Filename); Result_t result = Buffer.Capacity(file_size); if ( KM_SUCCESS(result) ) { ui32_t read_count = 0; FileWriter Reader; result = Reader.OpenRead(Filename); if ( KM_SUCCESS(result) ) result = Reader.Read(Buffer.Data(), file_size, &read_count); if ( KM_SUCCESS(result) ) { if ( file_size != read_count) return RESULT_READFAIL; Buffer.Length(read_count); } } return result; }
Kumu::Result_t Kumu::ReadFileIntoObject(const std::string& Filename, Kumu::IArchive& Object, ui32_t max_size) { ByteString Buffer; ui32_t file_size = static_cast<ui32_t>(FileSize(Filename)); Result_t result = Buffer.Capacity(file_size); if ( KM_SUCCESS(result) ) { ui32_t read_count = 0; FileWriter Reader; result = Reader.OpenRead(Filename); if ( KM_SUCCESS(result) ) result = Reader.Read(Buffer.Data(), file_size, &read_count); if ( KM_SUCCESS(result) ) { assert(file_size == read_count); Buffer.Length(read_count); MemIOReader MemReader(&Buffer); result = Object.Unarchive(&MemReader) ? RESULT_OK : RESULT_READFAIL; } } return result; }