FileStream.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include "Common.h"
  3. #include "DataStream.h"
  4. NS_BF_BEGIN;
  5. class FileStream : public DataStream
  6. {
  7. BF_DISALLOW_COPY(FileStream);
  8. public:
  9. FILE* mFP;
  10. uint8* mCacheBuffer;
  11. int mCacheReadPos;
  12. int mCacheSize;
  13. int mVFilePos;
  14. bool mReadPastEnd;
  15. public:
  16. FileStream();
  17. ~FileStream();
  18. bool Open(const StringImpl& filePath, const char* fopenOptions);
  19. bool IsOpen();
  20. void Close();
  21. void SetCacheSize(int size);
  22. bool Eof() override;
  23. int GetSize() override;
  24. using DataStream::Read;
  25. int Read(void* ptr, int size) override;
  26. using DataStream::Write;
  27. int Write(void* ptr, int size) override;
  28. int GetPos() override;
  29. void Seek(int size) override;
  30. void SetPos(int pos) override;
  31. };
  32. class FileSubStream : public FileStream
  33. {
  34. public:
  35. int mOffset;
  36. int mSize;
  37. public:
  38. int GetSize() override;
  39. int GetPos() override;
  40. void SetPos(int pos) override;
  41. };
  42. class SysFileStream : public DataStream
  43. {
  44. BF_DISALLOW_COPY(SysFileStream);
  45. public:
  46. BfpFile* mFile;
  47. public:
  48. SysFileStream();
  49. ~SysFileStream();
  50. bool Open(const StringImpl& filePath, BfpFileCreateKind createKind, BfpFileCreateFlags createFlags);
  51. bool IsOpen();
  52. void Close();
  53. void SetSizeFast(int size); // May create uninitialized data
  54. bool Eof() override;
  55. int GetSize() override;
  56. using DataStream::Read;
  57. int Read(void* ptr, int size) override;
  58. using DataStream::Write;
  59. int Write(void* ptr, int size) override;
  60. int GetPos() override;
  61. void Seek(int size) override;
  62. void SetPos(int pos) override;
  63. };
  64. NS_BF_END;