#include "memcard/memorycard.hpp" #include "memcard/block.hpp" #include #include #include namespace mc { MemoryCard::MemoryCard() : m_data(8192 * 16) { } MemoryCard::MemoryCard (std::istream&& raw_mc) : MemoryCard() { raw_mc >> std::noskipws; std::copy_if( std::istream_iterator(raw_mc), std::istream_iterator(), m_data.begin(), [count = m_data.size()](auto&&) mutable { return count && count--; } ); assert(8192 * 16 == m_data.size()); } MemoryCard::~MemoryCard() = default; Block MemoryCard::operator[] (std::size_t index) { assert(index < 15); return Block(m_data.data() + (index + 1) * Block::size()); } ConstBlock MemoryCard::operator[] (std::size_t index) const { assert(index < 15); return ConstBlock(m_data.data() + (index + 1) * Block::size()); } } //namespace mc