Beispiel #1
0
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())));
}
Beispiel #2
0
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;
};