57 lines
1013 B
C++
57 lines
1013 B
C++
#include <base/io/MemoryStream.hpp>
|
|
#include <cstring>
|
|
|
|
namespace dmtools::io {
|
|
MemoryStream::MemoryStream(u8* memory, usize size) {
|
|
beg = memory;
|
|
cur = beg;
|
|
end = memory + size;
|
|
this->size = size;
|
|
}
|
|
|
|
MemoryStream::~MemoryStream() {
|
|
}
|
|
|
|
StreamDiff MemoryStream::ReadSome(u8* buffer, usize length) {
|
|
if(Eof())
|
|
return -1;
|
|
memcpy(&buffer[0], cur, length);
|
|
cur += length;
|
|
return length;
|
|
}
|
|
|
|
StreamDiff MemoryStream::WriteSome(const u8* buffer, usize length) {
|
|
return -1;
|
|
};
|
|
|
|
StreamDiff MemoryStream::Seek(StreamDiff where, StreamSeekDirection dir) {
|
|
using enum StreamSeekDirection;
|
|
auto last = Tell();
|
|
switch(dir) {
|
|
case Beg:
|
|
cur = beg + where;
|
|
break;
|
|
case Cur:
|
|
cur += where;
|
|
break;
|
|
case End: // TODO
|
|
cur = end;
|
|
break;
|
|
}
|
|
return last;
|
|
}
|
|
|
|
StreamDiff MemoryStream::Tell() const {
|
|
return (cur - beg);
|
|
}
|
|
|
|
bool MemoryStream::Ok() const {
|
|
return !Eof();
|
|
}
|
|
|
|
bool MemoryStream::Eof() const {
|
|
return cur == end;
|
|
};
|
|
|
|
} // namespace dmtools::io
|