2
0

DataStream.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma once
  2. #include "Common.h"
  3. NS_BF_BEGIN;
  4. class DataStream
  5. {
  6. public:
  7. bool mBigEndian;
  8. int mBitPos;
  9. uint32 mCurBitInt;
  10. int mReadBitIntPos; // in bits
  11. protected:
  12. uint32 GetBitInt(int bitPos);
  13. public:
  14. DataStream();
  15. virtual ~DataStream() {}
  16. virtual bool Eof() = 0;
  17. virtual int GetSize() = 0;
  18. virtual int Read(void* ptr, int size) = 0;
  19. virtual int Write(void* ptr, int size) = 0;
  20. virtual void WriteZeros(int size);
  21. virtual void Align(int size);
  22. virtual int GetPos() = 0;
  23. virtual void Seek(int size) = 0;
  24. virtual void SetPos(int pos) = 0;
  25. virtual int8 ReadInt8();
  26. virtual uint8 ReadUInt8();
  27. virtual int16 ReadInt16();
  28. virtual uint16 ReadUInt16();
  29. virtual int32 ReadInt32();
  30. virtual int64 ReadInt64();
  31. virtual float ReadFloat();
  32. virtual double ReadDouble();
  33. virtual String ReadAscii8SizedString();
  34. virtual String ReadAscii32SizedString();
  35. virtual String ReadUnicode32SizedString();
  36. virtual String ReadSZ();
  37. template <typename T>
  38. void ReadT(const T& val)
  39. {
  40. Read((void*) &val, sizeof(T));
  41. }
  42. template <typename T>
  43. T ReadT()
  44. {
  45. T val;
  46. Read((void*)&val, sizeof(T));
  47. return val;
  48. }
  49. virtual void Write(float val);
  50. virtual void Write(uint8 val);
  51. virtual void Write(int8 val);
  52. virtual void Write(int16 val);
  53. virtual void Write(int32 val);
  54. virtual void Write(int64 val);
  55. virtual void Write(const StringImpl& val);
  56. virtual void Write(DataStream& refStream);
  57. virtual void WriteSNZ(const StringImpl& val);
  58. virtual void WriteSZ(const StringImpl& val);
  59. template <typename T>
  60. void WriteT(const T& val)
  61. {
  62. Write((void*)&val, sizeof(T));
  63. }
  64. virtual void SyncBitPos();
  65. virtual void SyncBytePos();
  66. virtual int ReadUBits(int bits);
  67. virtual void SeekBits(int bits);
  68. };
  69. NS_BF_END;