ChunkId Parser::read_id(std::istream &stream) { std::array<char, sizeof(ChunkId)> buffer; if (!stream.read(buffer.data(), buffer.max_size())) throw std::runtime_error("Failed to read chunk id"); static_assert(sizeof(ChunkId) == sizeof(uint32_t), "ChunkId must be of the same size as uint32_t"); return ChunkId(htonl(*reinterpret_cast<uint32_t const *>(buffer.data()))); }
ChunkId SF2Reader::chunkHeader::id() const { for( int i=0; i<int(ChunkId::unknown); ++i ) if( memcmp(ChunkIdName+4*i,chunkId,4)==0 ) return ChunkId(i); return ChunkId::unknown; };