StreamScope.h trio/Stream.h utility BinaryStreamReaderImpl.cpp JSONStreamReaderImpl.cpp trio::StreamScope trio //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce #include"trio/Stream.h" #include<utility> namespacetrio{ classStreamScope{ public: explicitStreamScope(Controllable*stream_):stream{stream_}{ stream->open(); } ~StreamScope(){ if(stream!=nullptr){ stream->close(); } } StreamScope(constStreamScope&)=delete; StreamScope&operator=(constStreamScope&)=delete; StreamScope(StreamScope&&rhs)noexcept:stream{nullptr}{ std::swap(stream,rhs.stream); } StreamScope&operator=(StreamScope&&rhs)noexcept{ std::swap(stream,rhs.stream); return*this; } private: Controllable*stream; }; }//namespacetrio