MemoryMappedFileStream.cpp trio/streams/MemoryMappedFileStream.h trio/streams/MemoryMappedFileStreamFallback.h trio/streams/MemoryMappedFileStreamUnix.h trio/streams/MemoryMappedFileStreamWindows.h pma/PolyAllocator.h trio //CopyrightEpicGames,Inc.AllRightsReserved. #include"trio/streams/MemoryMappedFileStream.h" #include"trio/streams/MemoryMappedFileStreamFallback.h" #include"trio/streams/MemoryMappedFileStreamUnix.h" #include"trio/streams/MemoryMappedFileStreamWindows.h" #include<pma/PolyAllocator.h> namespacetrio{ #ifdefined(TRIO_WINDOWS_FILE_MAPPING_AVAILABLE) usingMemoryMappedFileStreamImpl=MemoryMappedFileStreamWindows; #elifdefined(TRIO_MMAP_AVAILABLE) usingMemoryMappedFileStreamImpl=MemoryMappedFileStreamUnix; #else usingMemoryMappedFileStreamImpl=MemoryMappedFileStreamFallback; #endif MemoryMappedFileStream*MemoryMappedFileStream::create(constchar*path,AccessModeaccessMode,MemoryResource*memRes){ pma::PolyAllocator<MemoryMappedFileStreamImpl>alloc{memRes}; returnalloc.newObject(path,accessMode,memRes); } voidMemoryMappedFileStream::destroy(MemoryMappedFileStream*instance){ //NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) autostream=static_cast<MemoryMappedFileStreamImpl*>(instance); pma::PolyAllocator<MemoryMappedFileStreamImpl>alloc{stream->getMemoryResource()}; alloc.deleteObject(stream); } MemoryMappedFileStream::~MemoryMappedFileStream()=default; }//namespacetrio