rpcsx/rpcs3/Emu/FS/vfsStream.h

45 lines
751 B
C
Raw Normal View History

#pragma once
2015-04-25 00:38:11 +03:00
#include "Utilities/File.h"
struct vfsStream
{
2015-04-19 16:19:24 +03:00
vfsStream() = default;
2015-04-19 16:19:24 +03:00
virtual ~vfsStream()
{
Close();
}
2015-04-19 16:19:24 +03:00
virtual bool Close()
{
return true;
}
2015-04-19 16:19:24 +03:00
virtual u64 GetSize() const = 0;
2015-04-19 16:19:24 +03:00
virtual u64 Write(const void* src, u64 count) = 0;
2015-04-16 02:17:42 +03:00
template<typename T> force_inline bool SWrite(const T& data, u64 count = sizeof(T))
2015-04-16 02:17:42 +03:00
{
2015-04-19 16:19:24 +03:00
return Write(&data, count) == count;
2015-04-16 02:17:42 +03:00
}
2015-04-19 16:19:24 +03:00
virtual u64 Read(void* dst, u64 count) = 0;
template<typename T> force_inline bool SRead(T& data, u64 count = sizeof(T))
2015-04-16 02:17:42 +03:00
{
2015-04-19 16:19:24 +03:00
return Read(&data, count) == count;
2015-04-16 02:17:42 +03:00
}
2015-04-19 16:19:24 +03:00
virtual u64 Seek(s64 offset, u32 mode = from_begin) = 0;
virtual u64 Tell() const = 0;
virtual bool Eof() const
{
return Tell() >= GetSize();
}
2015-04-19 16:19:24 +03:00
virtual bool IsOpened() const = 0;
2015-04-16 18:33:55 +03:00
};