CMemoryStream.cpp 756 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "StdInc.h"
  2. #include "CMemoryStream.h"
  3. CMemoryStream::CMemoryStream(const ui8 * data, si64 size, bool freeData /*= false*/):
  4. data(data),
  5. size(size),
  6. position(0),
  7. freeData(freeData)
  8. {
  9. }
  10. CMemoryStream::~CMemoryStream()
  11. {
  12. if(freeData)
  13. {
  14. delete[] data;
  15. }
  16. }
  17. si64 CMemoryStream::read(ui8 * data, si64 size)
  18. {
  19. std::copy(this->data + position, this->data + position + size, data);
  20. position += size;
  21. return size;
  22. }
  23. si64 CMemoryStream::seek(si64 position)
  24. {
  25. si64 diff = this->position;
  26. this->position = position;
  27. return position - diff;
  28. }
  29. si64 CMemoryStream::tell()
  30. {
  31. return this->position;
  32. }
  33. si64 CMemoryStream::skip(si64 delta)
  34. {
  35. this->position += delta;
  36. return delta;
  37. }
  38. si64 CMemoryStream::getSize()
  39. {
  40. return size;
  41. }