CMemoryStream.cpp 779 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "StdInc.h"
  2. #include "CMemoryStream.h"
  3. CMemoryStream::CMemoryStream(const ui8 * data, si64 size) :
  4. data(data), size(size), position(0)
  5. {
  6. }
  7. si64 CMemoryStream::read(ui8 * data, si64 size)
  8. {
  9. si64 toRead = std::min(this->size - tell(), size);
  10. std::copy(this->data + position, this->data + position + toRead, data);
  11. position += size;
  12. return toRead;
  13. }
  14. si64 CMemoryStream::seek(si64 position)
  15. {
  16. si64 origin = tell();
  17. this->position = std::min(position, size);
  18. return tell() - origin;
  19. }
  20. si64 CMemoryStream::tell()
  21. {
  22. return this->position;
  23. }
  24. si64 CMemoryStream::skip(si64 delta)
  25. {
  26. si64 origin = tell();
  27. this->position += std::min(size - origin, delta);
  28. return tell() - origin;
  29. }
  30. si64 CMemoryStream::getSize()
  31. {
  32. return size;
  33. }