MemStream.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include "Common.h"
  3. #include "DataStream.h"
  4. NS_BF_BEGIN;
  5. class MemStream : public DataStream
  6. {
  7. public:
  8. uint8* mData;
  9. int mSize;
  10. int mPos;
  11. bool mFreeMemory;
  12. public:
  13. MemStream(void* data, int size, bool freeMemory);
  14. ~MemStream();
  15. static MemStream* CreateWithDuplicate(void* data, int size);
  16. static MemStream* CreateWithOwnershipTaken(void* data, int size);
  17. static MemStream* CreateWithNoCopy(void* data, int size);
  18. bool Eof() override;
  19. int GetSize() override;
  20. using DataStream::Read;
  21. int Read(void* ptr, int size) override;
  22. using DataStream::Write;
  23. int Write(void* ptr, int size) override;
  24. int GetPos() override;
  25. void Seek(int size) override;
  26. void SetPos(int pos) override;
  27. };
  28. class SafeMemStream : public MemStream
  29. {
  30. public:
  31. bool mFailed;
  32. SafeMemStream(void* data, int size, bool freeMemory);
  33. using DataStream::Read;
  34. int Read(void* ptr, int size) override;
  35. };
  36. class DynMemStream : public DataStream
  37. {
  38. public:
  39. Array<uint8> mData;
  40. int mPos;
  41. public:
  42. DynMemStream();
  43. bool Eof() override;
  44. int GetSize() override;
  45. using DataStream::Read;
  46. int Read(void* ptr, int size) override;
  47. using DataStream::Write;
  48. int Write(void* ptr, int size) override;
  49. void Write(uint8 val) override;
  50. int GetPos() override;
  51. void Seek(int size) override;
  52. void SetPos(int pos) override;
  53. void Clear();
  54. void* GetPtr();
  55. };
  56. NS_BF_END;