#pragma once #include #include #include #include class ZoneDataPeeking { public: explicit ZoneDataPeeking(std::istream& stream); template const T& PeekStruct() { EnsureHasEnoughData(sizeof(T)); return *reinterpret_cast(m_data.data()); } void PeekWithStream(const std::function& cb) const; private: void EnsureHasEnoughData(size_t size); std::istream& m_stream; std::vector m_data; };